我想问下HashSet类中的Set.add方法,如果add相同的两个对象,是不是通过equals方法对比后,只在堆内存中生成一个对象?到底是覆盖第一个还是忽略后面的那个呢?我做了个实验,第一步:设定一个Student类,并且重写了该类中的equals方法,返回值的boolean类型为true(因为我要查明是覆盖还是忽略,所以让他不管相同还是不相同都返回true)。第二部:生成HashSet类并向上转型为Set,之后生成两个不同对象并且使用Set.add()添加。具体代码如下import java.util.Set;import java.util.HashSet;import java.util.Iterator;class Student{ String name ; int age; public Student() { } public Student(String name, int age) { this.name = name ; this.age = age ; } public boolean equals(Object o) { System.out.println("equals"); return true; } public static void main(String args []) { Set set = new HashSet(); Student s1 = new Student("zhangsan",20); Student s2 = new Student("lisi",21); System.out.println(s1.equals(s2)); set.add(s1); set.add(s2); Iterator it = set.iterator(); while(it.hasNext()) { Student s = (Student)it.next(); System.out.println(s.name); } }} 结果为:equalstruelisizhangsan
慕姐8265434
猛跑小猪
相关分类