Java容器分代介绍

java中的容器就是集合。

java中的集合分为两个部分:java.util、java.util.concurrent(JUC)两部分内容

1.0版本

此版本出现了Vector、Stack、HashTable、Properties四部分内容,

Vector是一个线程安全的可变长度数组;

Stack是栈,类中有出栈,入栈等方法;

HashTable是一个线程安全Map,与后面1.2版本出现的HashMap差别不大,主要区别Key不允许出现null,在操作HashTable时会锁住整个HashTable,导致性能较低;

Properties是用于存储属性文件中的内容;

1.2版本

此版本中java开始面向接口编程,大量使用接口

Collection接口在1.2版本中是作为顶级接口出现的,他有两个实现类,List和Set,List用于存储有序可重复数据,Set用来存储无序不可重复数据;

List接口下实现了LinkedList和ArrayList两个类,LinkedList底层使用双向非循环链表实现,ArrayList是一个可变长度数组,扩容机制可见补充部分;

为了使集合中的结构更加清晰,1.2版本将Vector也作为了List的实现之一;

Set接口下实现了HashSet和SortedSet两个,SortedSet用来存储可排序数据,且在1.2版本TreeSet是作为SortedSet直接实现类实现的;

Map接口下实现了HashMap和SortedMap,SortedMap用来存储可排序数据,且在1.2版本TreeMap是作为SortedMap直接实现类实现的;

1.4版本

此版本中主要新增了HashMap的实现类LinkedHashMap,HashSet的实现类LinkedHashSet;

LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。在一些场景下,该特性很有用,比如缓存。在实现上,LinkedHashMap 很多方法直接继承自 HashMap,仅为维护双向链表覆写了部分方法,是线程不安全的容器;

LinkedHashSet是一个基于LinkedHashMap实现的有序去重集合列表。

  • LinkedHashSet中的元素没有重复

  • LinkedHashSet中的元素有顺序,维护了添加顺序

  • LInkedHashSet可以存储null值

  • LinkedHashSet是一个线程不安全的容器

1.5版本

此版本新增JUC包下的集合和Queue接口,以及在顶级接口Collection上方新增了Iterable接口,Iterable接口下所有集合都可以通过迭代器迭代;

Queue(对接)在此版本主要实现了BlockingQueue(阻塞队列)以及BlockingQueue下的ArrayBlockingQueue(基于数组实现的队列),DelayQueue(延迟队列);

JUC中的4个常用实现类,ConcurrentLinkedQueue是一个基于链表的无界队列,没有上限的队列。CopyOnWriteArrayList是ArrayList的并发支持类,底层基于读写分离思想实现,适用于读大于写场景。CopyOnWriteArraySet是Set的并发支持类,底层基于CopyOnWriteArrayList实现,适用于读大于写场景。ConcurrentHashMap看下面的单独详情介绍

1.6版本

此版本新增了Deque(双向队列),SortedSet和SortedMap的实现类NavigableSet和NavigableMap;

Deque主要实现类ArrayDeque,是基于数组实现的双向队列,同时让LinkedList也实现了Deque,表示可以用链表实现队列结构;

SortedSet新增实现类NavigableSet,并且将TreeSet调整为NavigableSet的实现类;

SortedMap新增实现类NavigableMap,并且将TreeMap调整为NavigableMap的实现类;

补充

分代示意图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值