gpt4 book ai didi

java - HashMap/ArrayList 中的错误或错误的代码?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:46 25 4
gpt4 key购买 nike

<分区>

厌倦了尝试用这段代码解决问题:

public class MapTest {
static class T{
static class K{}
}
static Map<List<T.K>, List<String>> map = new HashMap<>();
static List<String> test(List<T.K> list, String s){
List<String> l = map.get(list);
if (l == null){
l = new ArrayList<String>();
System.out.println("New value()");
map.put(list, l);
}
l.add(s);
return l;
}
public static void main(String s[]){
ArrayList<T.K> list = new ArrayList<T.K>();
test(list, "TEST");
list.add(new T.K());
List<String> l = test(list, "TEST1");
System.out.println(l.size());
}
}

它应该只为 map 创建一个新的列表值一次,但输出如下:

New value
New value
1

在我向其中插入值后,列表的哈希码发生了一些错误。我希望“新值(value)”只出现一次,大小为 2,而不是 1。它只是 JVM 问题还是更一般的问题?我的一个是 Oracle JVM 1.8.0_65

25 4 0