Java 集合Set和Map

Set接口:

存储无序、不可重复的数据 

​    Hashset:作为Set接口的主要实现类:线程不安全的;可以存储null值

​        linkedHashSet:作为HashSet的子类:遍历其内部数据时,可以按照添加的顺序遍历。

​    TreeSet:可以按照添加对象的指定属性,进行排序;

set存储时,初始化16长度的数组;

无序性:不等于随机性。存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据

数据的哈希值来

不可重复性:保证添加的元素按照equals()判断时,不能返回true.即:相同的元素只能添加一个。

Map

Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。

Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。

HashMap
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)除实现了Map接口外还实现了Cloneable,Serializable,继承了AbstractMap抽象类
此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
特点:
键无序,唯一,类似于Set集合
值有序,可重复,类似于List
底层数据结构是哈希表,保证键唯一
允许键为null,值为null

LinkedHashMap

  1. 实现了Map接口,底层是依赖于哈希表和链表的,具有可预知的遍历顺序
  2. 哈希表保证唯一性,保证的是Key的唯一性
  3. 链表保证有序,保证的是键的有序(存储和取出顺序一致)
  4. TreeMap
    HashMap的key值是无序的,而实现了SortedMap接口的具体实现类TreeMap会对key值进行排序
    TreeMap底层基于红黑树
    TreeMap实现排序有两种方式
    (一)传入的key值实现了Comparable接口(String,Integer等都已经实现了Comparable接口,因此可以直接用)
    (二)创建TreeMap集合的时候指定比较器Comparator

TreeMap
基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,
具体取决于使用的构造方法。
特点:
键可排序,唯一,
值有序,可重复,类似于List
底层数据结构是自平衡的二叉树,可排序
排序方式类似于TreeSet,分为自然排序和比较器排序,具体取决于使用的构造方法

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值