Java中的集合

Java中的集合

从JDK1.2开始java中新增了集合API,用于将所有集合进行统一归纳,形成了两种集合的解决方案:

  • 单例集合
  • 双列集合

单列集合有一个顶层的接口:Collection

双列集合有一个顶层接口:Map

Colection

Collecton是所有单列集合的顶层接口
其存在两个子接口:

  • List:是一个有序的集合,并且允许重复的元素出现
  • Set:是一个无序集合,并且不允许重复元素出现
List集合

List接口是一个有序的集合,内部允许重复的元素出现,并且元素的存储顺序是按照添加顺序存储,因此可以通过元素的索引位置快捷的搜索到目标元素;

List接口有几个常见的实现类:

  • ArrayList
  • LinkedList
  • Vector
Set集合

Set是从jdk1.2开始出现,对比List集合,Set集合特点如下:

  • 元素的存储顺序与添加顺序无关(无序)
  • 内部不允许重复元素

Set接口一些常见的实现类:

  • HashSet
  • LinkedHashSet
  • TreeSet

Map集合

Map集合是由键值对结构组成,通常由一个唯一键对应一个值,集合中存储的元素键不允许重复,但是值可以重复,Map集合是一个键值对集合的顶层接口。

常见的实现类主要有以下:

  • HashMap
  • TreeMap
  • LinkeHashMap
  • HashTable
HashMap

HashMap是Map中最常用的一个实现类,内部实现是基于数组+链表(JDK1.8之前;JDK1.8之后改为使用数组+链表+红黑树实现);元素的存储按照键值对的方式,存储顺序根据键的hashCode(包括equals)计算之后存储。

TreeMap

Map集合另外针对于排序的需求还有一个TreeMap的实现类,该类内部基于红黑树(平衡排序二叉树)实现;内部的元素存储顺序,由键对应的类型实现Comparable接口后,通过重写comparaTo方法实现;TreeMap的使用需要满足以下两个条件:

  • key的类型必须一致
  • key对应的类必须实现Comparable接口
HashTable

Hashtable也是键值对结构的集合解决方案,从jdk1.0之后就已经存在,从老式的集合类java.util.Dictionary继承而来,初始长度是11(HashMap是16),Hashtable是线程安全实现(HashMap是线程不安全的实现);Hashtable不允许空键值出现(HashMap允许)

LinkedHashMap

LinkedHashMap是基于链表的HashMap实现,本身也是从HashMap继承而来,通过链表实现内部元素的存储顺序保持与添加顺序一致。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值