初探java集合框架

来源:互联网 发布:中国软件行业协会会员 编辑:程序博客网 时间:2024/05/17 07:53

集合框架UML图
这里写图片描述

从图中可以看出集合框架分为2大模块 Collection和Map。


Collection

Collection主要子类接口分为List、Set、Quene。

List的特点是 集合中的元素可重复,因实现ListIterator接口所以提供双向迭代的功能
以下是相关List的具体实现类

类名 使用对象 是否实现同步 默认大小 默认扩容大小 Vector 数组(Object[]) 是 10 100% ArrayList 数组(Object[]) 否 10 50% LinkedList 链表(内部静态类Node) 否 0 无

Stack在Vector类的基础上增加了栈的先进后出的规则。


Set的特点是 集合中的元素不可重复
HashMap的数组长度总是2的多少次方

类名 使用对象 是否实现同步 默认大小 默认扩容大小 特点 HashSet 数组加链表 否 16 100% 元素插入无序,查询快 TreeSet 树状结构 否 0 无 元素有序插入,也能按照给定规则进行比较插入

LinkedHashSet在HashSet的基础上在每次增加元素,删除元素时,用一条链表维护元素插入时的先后顺序。

Map

Map是以key-value形式存储的集合

类名 使用对象 是否实现同步 默认大小 默认加载因子 默认扩容大小(在不超过最大值时) 特点 HashMap 数组加链表 否 16 0.75f 100% 元素无序插入,访问快 HashTable 数组加链表 是 11 0.75f 100%+1 使用Enumeration进行迭代 TreeMap 树状结构 否 16 0.75f 100% 有序插入 IdentityHashMap 数组 否 32 无 100% 只要Key!=Key(即地址不等即可) WeakHashMap 数组加链表 否 16 0.75f 100% 弱引用Key(即使在内存充足时,只要这个Key不存在强引用,就会被GC给回收掉。)

Queue

Queue定义了队列的性质—先进先出

ArrayDeque—双向队列

PriorityQueue—优先级队列

以上2种队列均采用的是数组实现的。