Set集合

2022-09-10  本文已影响0人  嘘寒问暖

Set集合:

Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。不能存储重复的数据,是通过每个值的哈数Code来区分值是否相同。

List和Set的区别:

Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。

Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。

List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。(索引的重新排列)

HashSet和TreeSet:

HashSet该类实现了Set接口,不允许出现重复的数据,可以存储null值,但是只能存储一个null,不保证存储时的顺序。它是非线程安全的,只能通过显式同步来对其进行并发访问。

HashSet的内部结构是一张Hash表,那HashSet是通过什么方法是来确保值的唯一呢?用的是hashCode方法和equals方法。如果值的hashCode不同,则直接添加到HashSet中,如果hashCode相同,则通过equals来判断是否一致,如果为true则为值重复,则不存储到HashSet中,为false则存储到HashSet中。如果自定义对象作为值存到HashSet中要复写hashCode和equals。

TreeSet该类实现了Set接口,可以进行一些排列操作。

上一篇下一篇

猜你喜欢

热点阅读