首页 理论教育 Set集合介绍及HashSet与TreeSet使用方法

Set集合介绍及HashSet与TreeSet使用方法

时间:2023-11-22 理论教育 版权反馈
【摘要】:Set是一个集合,它不保证存取的顺序[17],它的主要特性就是存储值的唯一性,重复的添加操作对Set无用,集合中只会存储一份数据。本节主要介绍两种Set,分别是HashSet和TreeSet。使用HashSet作为集合容器,向集合中添加Person的实例。HashSet通过Hash算法保证对象的快速读取,通过hashCode和equals方法保证对象不会重复,所以当重复添加对象的时候Set中并没有出现重复的内容。读者可以在编写代码时了解Set其他方法的具体用法。

Set集合介绍及HashSet与TreeSet使用方法

Set是一个集合,它不保证存取的顺序[17],它的主要特性就是存储值的唯一性,重复的添加操作对Set无用,集合中只会存储一份数据。要判断存储的对象是否相等,可使用equals和hashCode方法。本节主要介绍两种Set,分别是HashSet和TreeSet。

(1)HashSet

运行结果如下:

[id=1 name=lilei,id=2 name=hanmeimei,id=3 name=lucy]

[id=1 name=lilei,id=3 name=lucy]

it is a person and id=1 name=lilei

it is a person and id=3 name=lucy

对之前实现的Person类添加hashCode方法。使用HashSet作为集合容器,向集合中添加Person的实例。HashSet通过Hash算法保证对象的快速读取,通过hashCode和equals方法保证对象不会重复,所以当重复添加对象的时候Set中并没有出现重复的内容。Set包含的方法很多,例如contains()就是一个常用方法,用于判断一个集合是否包含某个对象。读者可以在编写代码时了解Set其他方法的具体用法。(www.xing528.com)

这个例子中使用Set的写法和之前的List写法并不相同,Set后面的<>符号中没有添加具体的类型,这种情况下当遍历集合中的对象时,并不知道集合中的具体对象类型,所以需要使用instanceof动态判断对象的类型(当然也可以使用强制转换类型);而如果使用在<>中添加类型的写法则不用进行这种判断,这种写法称为泛型,后面的章节会有介绍。

(2)TreeSet

运行结果如下:

[id=29 name=xiaoming,id=32 name=xiaoming,id=37 name=xiaoming,id=40 name=xiaoming,

id=41 name=xiaoming,id=50 name=xiaoming]

TreeSet是一种可排序的Set,代码中没有采用之前的让对象实现接口从而排序的方法,而直接采用对Set设置比较方法来进行排序,这两种方法都可以实现排序的能力。在这里用Person作为泛型的类型,所以在内部类中可以直接进行对象的比较而不用进行类型转换。方法最后输出了一个有序的集合数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈