码迷,mamicode.com
首页 > 其他好文 > 详细

Set集合

时间:2019-04-30 01:28:55      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:hashcode   方法   节点   返回值   数组   返回   判断   允许   排序   

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集合

标签:hashcode   方法   节点   返回值   数组   返回   判断   允许   排序   

原文地址:https://blog.51cto.com/13852519/2386945

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!