java基础17-Set集合

 

Set集合

Set集合里面的方法和Collection里面的方法一样,没有什么特有的方法,主要学什么?学Set集合的子类如何保证元素的唯一(如何保证元素不重复)
HashSet实现了Set接口,有哈希表(实际是一个HashMap实例)支持,它不保证set的迭代顺序,特别是它不保证该顺序恒久不变,此类允许使用null元素
Set集合的特点:无索引,不可以重复,无序(存取不一致)

 

 

问题:HashSet集合存储自定义对象,HashSet不能保证元素的唯一,new的对象每一个都有自己的地址值

我们认为同姓名同年龄是同一个人,如何做?Person类里面重写equals方法,但是还是全部打印了,为啥呢?equals方法没有被执行

 1 package com.test.Set;
 2 
 3 import com.test.bean.Person;
 4 import java.util.HashSet;
 5 
 6 
 7 public class Demo1702_HashSet {
 8 
 9     //HashSet存储自定义对象保证元素唯一性
10         //为什么要存储自定义对象?因为你存储java给我们提供的已有的对象的话,我们不知道它重写了哪些方法来决定它保证元素唯一
11         //现在我们存储的是自定义的对象,自定义对象是我们自己写的,什么方法都没有重写,看看有什么特点?
12         //一个类有什么特点,是由她的功能决定的,HashSet保证元素的唯一是因为里面有个功能可以保证元素唯一
13 
14     public static void main(String[] args) {
15 
16         HashSet<Person> hs = new HashSet<Person>();//创建HashSet对象
17         hs.add(new Person("张三",24));
18         hs.add(new Person("张三",24));
19         hs.add(new Person("李四",24));
20         hs.add(new Person("李四",24));
21         hs.add(new Person("李四",24));
22         hs.add(new Person("李四",24));
23 
24         //System.out.println(hs.size());//打印结果是6
25         System.out.println(hs);
26         //new Person() new的对象每一个都有自己的地址值,所以都打印了
27     }
28 }

 

 1,Person类重写了toString方法

 1 package com.test.bean;
 2 
 3 
 4 public class Person {
 5 
 6     private String name ;
 7     private int age;
 8 
 9     public Person() {
10     }
11 
12     public Person(String name, int age) {
13         this.name = name;
14         this.age = age;
15     }
16 
17     public String getName() {
18         return name;
19     }
20 
21     public void setName(String name) {
22         this.name = name;
23     }
24 
25     public int getAge() {
26         return age;
27     }
28 
29     public void setAge(int age) {
30         this.age = age;
31     }
32 
33     @Override
34     public String toString() {
35         return "Person{" +
36                 "name='" + name + '\'' +
37                 ", age=" + age +
38                 '}';
39     }
40 }

 

Person类里面重写equals方法

 

上一篇:Java集合数据结构——HashMap&HashSet


下一篇:HashSet 源码