Set集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Set集合相关的知识,希望对你有一定的参考价值。

HashSet:
HashSet 底层数据结构是哈希表. HashSet 不是线程安全的 集合元素可以是 null
哈希表:是一个元素为链表的数组,综合了数组和链表的优点
当向 HashSet 集合中存入一个元素时,HashSet 会调用该对象的 hashCode() 方法来得到该对象的 hashCode 值,然后根hashCode 值决定该对象在 HashSet 中的存储位置。
HashSet 集合判断两个元素相等的标准:
两个对象通过 hashCode() 方法比较相等,并且两个对象的 equals() 方法返回值也相等。
HashSet的数据结构是 数组跟链表
HashSet的数据结构是 数组跟链表和二叉树

LinkedHashSet:
数据结构 有两个 链表和哈希表

链表保证有序 哈希表保证元素唯一

TreeSet:
集合的特点: 元素唯一,并且可以对元素进行排序
底层的数据结构是二叉树
    排序:
        1:自然排序
        2:使用比较器排序       
采用空参构造时,就用的是自然排序,
自然排序要求元素必须实现一个Compareble 接口 
并且重写接口中 compareTo 这个比较的方法,根据
此方法的返回值的正负0 来决定元素放置到树结构的
位置,以及不往里面方法
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)
支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。
采用比较器排序:你使用有参构造,参数就会要一个比较器

使用元素的自然顺序对元素进行排序,或者根据创建 set 时
提供的 Comparator 进行排序,具体取决于使用的构造方法。

此类允许使用 null 元素。

合理的重写hashCode方法的作用:
1.确定元素节点在哈希表中的存的位置,
2,减少调用equals方法()重写equals方法 当节点的索引相同时,去比较内容

以上是关于Set集合的主要内容,如果未能解决你的问题,请参考以下文章

peptide map DDA和IMS有啥区别

金蝶handler中 collection 代码片段理解

Alfred常见使用

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

比较 C# 中的字符串片段并从集合中删除项目

Python_Set集合