HashSet<List<Integer>> ans = new HashSet<>();
List<Integer> list = new ArrayList<>();
list.add(1111);
list.add(22222);
List<Integer> list1 = new ArrayList<>(list);
System.out.println(list1.hashCode());
ans.add(list1);
List<Integer> list2 = new ArrayList<>(list);
System.out.println(list2.hashCode());
ans.add(list2);
for (List<Integer> an : ans) {
System.out.println(an);
}
想问下大神们 为啥list1 和 list2 拥有相同的hashcode 即内存地址
因为发现set中只有一个list
同时我发现
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
list1 和 list2 也有相同的内存地址 他们难道不都是new出来的吗? 为什么会一样呢?
hashCode
是hashCode
不是内存地址内容相同
(即equals == true
)的对象,hashCode
相等