集合关系图
一,集合的设计初衷
- 为了保存数目不确定的数据/对象
- 可保存任意类型的对象
所有的集合类都位于java.util中的包中
二,集合分类
按照集合存储结构可分为两大类:
- 单列集合
- 双列集合
Collection接口
单列集合的根接口,存储符合某种规则的元素,包含List和Set两个重要的子接口
- List的特点是元素有序,元素可重复,List接口的主要实现类有ArrayList中和链表
- Set的特点是元素无序,元素不可重复,Set接口的主要实现类有HashSet的和LinekedSet
Map接口
Map接口是双列集合类的根接口,存储具有键(key)值(value)对映射关系的元素,每个元素包含一对键值,可通过键找到对应的值
主要实现类有HashMap中和TreeMap、HashTable,
LinkedHashMap是HashMap的子类,Properties是HashTable的子类
- HashMap的特点是元素无序,key不可重复,value可重复(如果key重复添加,会覆盖原来的value),key和value都可为null
- TreeMap的特点是元素有序,key也是不可重复,value可重复,TreeMap通过二叉树的原理来保证key的唯一性,与TreeSet存储原理相同,key不可为null,value可为空
- HashTable 相对HashMap是线程安全的,元素无序,key和value都不可为null
- Properties 在配置文件中经常使用,主要用来存储字符串类型的键和值
- LinkedHashMap 和LinkedList一样是使用双向链表来保证Map元素迭代(遍历)的顺序和存入的顺序一致,key和value都可为null
以下是LinkedHashMap迭代(遍历)结果
List接口
List集合中允许出现重复的元素,并且元素是有序的,所有的元素以线性的方式进行存储,可通过索引来获取指定元素
包含ArrayList、LinkedList、Vector三个子类
- ArrayList
- LinkedList
- Vector
Set接口
三、相关知识
1、双向链表
2、二叉树
3、HashMap实现原理