Set集合
Hashset
set集合值特点,它是不可重复的且无序的。但是这个排序是相对而言,它也有个自然排序,按照字母A-Z排序
1 Set<String> s=new HashSet<>();
2 // s.add("a");
3 // s.add("b");
4 // s.add("c");
5 // s.add("d");
6 // s.add("a");
7 // System.out.println(s.size());
8 //
9 // Iterator<String> it=s.iterator();
10 // while(it.hasNext()) {
11 // System.out.println(it.next());
12 // }
13 // System.out.println("---------------------");
14 // for(String so:s) {
15 // System.out.println(so);
Set集合的值(对象)
如果set集合放入的是对象,那么它是相对可以出现重复值的。当然只是我们看到的那样,其实这些值都有地址上的本质区别;
但是我们可以重写equals的方法来实现比较的是我们想比较的东西,而不是地址
1 @Override
2 public boolean equals(Object obj) {
3 boolean flag=false;
4 //判断当前对象的类型(所属自定义类的名称)
5 if(obj instanceof Person) {
6 Person p=(Person)obj;
7 if(this.sid==p.sid) {
8 if(this.sage==p.sage) {
9 if(this.sname.equals(p.sname)) {
10 flag=true;
11 }
12 }
13 }
14 }
接下来进行比较:
1 Set<Person> s=new HashSet<>(); 2 System.out.println(new Person(1, "Is", 18).equals(new
这就会进行值的比较,返回的值是false;
当我们用foreach进行循环遍历输出的时候,输出这个对象的话(在没有重写同String的情况下)它输出的是一窜字符,当我们重写toString后它默认的值就是对象的值