java中的集合(广义)即collection(狭义)和map
Collection
Iterable: 只有Iterator和foreach方法
collection:集合(又称为容器)他与array的不同在于array容量固定,而它可保存一个可以动态增长的数据,注意它是一个接口,不能实例化,继承自Iterable
set: 无序号,故不能有重复数据
list: 有序,可存在重复数据,每个元素都有索引
queue: 保持先入先出的顺序
备注: 他们都是接口
--------------------------------------------------------------------------------------------------
接下来介绍一下常用的实现类:
List
ArrayList
传说中的动态数组,顾名思义,是一种基于数组的数据结构
特点:初始大小为4,当数据存满时扩容为当前数组容量的两倍,即创建一个当前数组两倍大小的数组,然后把数组元素一个一个地存入
LinkedList
基于链表的数据结构,而且是双向链表
对比:
ArrayList随机访问效率高,linkedList得移动指针,效率相对低
linkedList增删效率高,ArrayList得移动数据
备注: 链表是一种物理存储单元上非连续、非顺序的存储结构,逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据的数据域,另一个是存储下一个结点地址的指针域。
Vector类似于ArrayList,区别在于他是线程安全的,即任意时刻都只有一个线程访问,相对的,访问他的速度比ArrayList慢
Set
hashSet
基于hash表,元素可为null
不可重复,无序
linkedHashSet
基于链表和哈希表
有序
treeSet
基于红黑树算法
有序
---------------------------------------------------------------------------------------------
Map
主要实现类为:
HashMap
HashTable
linkedHashMap
TreeMap
Map与set的关系:
Set集合就是由Map集合的Key组成