Set集合

作者: 嘘寒问暖 | 来源:发表于2022-09-10 23:33 被阅读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接口,可以进行一些排列操作。

    相关文章

      网友评论

          本文标题:Set集合

          本文链接:https://www.haomeiwen.com/subject/wagfortx.html