Set集合的

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 Person(1, "zs", 18))); 

这就会进行值的比较,返回的值是false;

当我们用foreach进行循环遍历输出的时候,输出这个对象的话(在没有重写同String的情况下)它输出的是一窜字符,当我们重写toString后它默认的值就是对象的值

猜你喜欢

转载自www.cnblogs.com/hyfl/p/10904302.html
今日推荐