gpt4 book ai didi

java - Map 的实现意味着每个键可能只包含 1 个值...但我需要 1 个键可以存储

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:32 26 4
gpt4 key购买 nike

例如...邻接表实现

public class Vertex {
String name;
boolean visited;
public Vertex(String name) {
this.name=name;
visited=false;
}
public int hashCode() {
return name.hashCode();
}
public boolean equals(Object ob) {
return hashCode()==ob.hashCode();
}
public String toString() {
return name;
}
}

主类

import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
PrintWriter pw=new PrintWriter(System.out);
Map<Vertex,Vertex> m=new HashMap();
m.put(new Vertex("a"), new Vertex("b"));// a ---> b
m.put(new Vertex("a"), new Vertex("c"));// a ---> c
m.put(new Vertex("a"), new Vertex("d"));// a ---> d
pw.println("All vertex from: ");
for (Vertex vert_from:m.keySet()) {
pw.print(vert_from+" ");
}
pw.println();
pw.println("All vertices to: ");
for (Vertex vert_to:m.values()) {
pw.print(vert_to+" ");
}
pw.close();
}
}

输出:
所有顶点来自: 一个
所有顶点:

但我需要“所有顶点:b c d”
我该如何解决?

最佳答案

Map 实际上每个键存储一个值。但是,您可以将集合存储在值中,例如 Set:

Map<Vertex, Set<Vertex>> m = new HashMap<>();
Set<Vertex> set = new HashSet<>();
set.add(new Vertex("b"));
set.add(new Vertex("c"));
set.add(new Vertex("d"));
m.add (new Vertex("a"), set);

或者,您可以使用此概念的一种常见实现,例如 Apache Commons Collections 的 MultiValueMap或 Guava 的 HashMultiMap .

关于java - Map 的实现意味着每个键可能只包含 1 个值...但我需要 1 个键可以存储 <Any Big Number> 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27202172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com