集合
-
集合:单例、双例
- 单例:
Interable(接口): 获得迭代器,从而使用增强for循环
Collection(接口): 集合(有序集合、无序集合)
List(接口):有序集合
ArrayList(类)、 LinkedList(类)、Vector(类)
set(接口):无序集合
HashSet(类)
LinkedHashSet(类)-
双例:
Map 接口
HshMap 类、LinkedHashMap 类、Hashtable 类
如图所示:
List 接口
-
List接口表示有序集合,每一个元素都有索引号
-
值可以重复,且可为null
ArrayList集合(有序集合:元素存与取的顺序相同)
- 底层采用
数组结构
- 特点: 添加、删除慢,查询快。
LinkedList集合
- 底层采用
链表结构
- 特点: 添加、删除快,查询慢
Vector集合(了解即可)
- 底层采用
数组结构
- 线程安全
- JDK1.0 老版本集合
- 被ArrayList所取代
- 底层采用
Set接口(无序集合:元素存与取的顺序不相同)
-
无序集合,值不能重复
-
通过元素的equals方法,来判断是否为重复元素
-
无顺序,无索引号
HashSet:
HashSet集合,采用哈希表结构存储数据(哈希表底层也采用数组机制),保证元素唯一性的方式依赖于:hashCode()与equals()方法。LinkedHashSet:
我们知道HashSet保证元素唯一,可是元素存放进去是没有顺序的,那么我们要保证有序,怎么办呢?在HashSet下面有一个子类LinkedHashSet,它是链表和哈希表组合的一个数据存储结构,元素的存与取的顺序一致
Map接口
-
Map是双例集合,以键值对存储(key/value)。
-
Map特点:Key不能重复,value可以重复
HashMap:
- 基于hash表Map实现
- 非线程安全
- 性能高
底层采用链表+数组结构+哈希表结构
LinkedHashMap:
底层采用链表+哈希表结构
- 在HashMap基础上,使用没有差异
Hashtable:
- 线程安全
- 不支持null为键或值
- 性能低‘
- 老版本实现已经被HashMap替代
-