62,625
社区成员
发帖
与我相关
我的任务
分享

HashSet<Object> hs = new HashSet<>();
String s1 = "sss";
String s2 = new String("sss");
System.out.println(s1 == s2);//false
hs.add(s1);
System.out.println(hs.contains(s2));//trueList list = new ArrayList();
Set set = new HashSet();
TestTest test = new TestTest(1);
list.add(test);
list.add(test);
set.add(test);
set.add(test);
System.out.println(list.size())//输出为2;
System.out.println(set.size());//输出为1
了解了上面这点,就明白了这两个类方法contains的不同,List是根据对象equals方法来判断,而Set是根据==来判断。
楼主可以根据我的论述自己写些测试代码验证下。
至于java为什么这么设计,那就上升到数据结构和算法的问题了,请自行脑补,呵呵。