Set
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args){
List<Person> men = new ArrayList<Person>();
men.add(new Person("xiaoming",22));
men.add(new Person("xiaoming",22));
men.add(new Person("小红",18));
for(Person person : men){
System.out.println(person);
}
}
}
结果如下:
数组列表不能够保证元素的唯一性,因此可以出现两个相同的元素。
但如果我们使用set,就可以保证了。但是,set只能够保证列表中不会出现两个地址相同的对象,比如:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Test2 {
public static void main(String[] args){
Set<Person> men = new HashSet<>();
//1
Person p = new Person("xiaoming",22);
men.add(p);
men.add(new Person("小红",18));
men.add(p);
//2
men.add(new Person("xiaoming",22));
men.add(new Person("xiaoming",22));
men.add(new Person("小红",18));
System.out.println(men.contains(p));//判断set表中是否有对象p,只能是对象,而不是对象中的值
for(Person person : men){
System.out.println(person);
}
}
}
1的结果如下
2的结果如下
所有Set在保证元素不会相同的时候,只有一个地址比较机制,而不会去比较它的值。
我们可以重写它。