Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
集合
- ArrayList是List的具体实现类。ArrayList实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能
- LinkedList也实现了List接口.允许有null(空)元素。主要用于创建链表数据结构
- List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
因为ArrayList和Linkedlist都实现了List接口,所有数组和链表都可以用相同的方法来操作 例如 - HashSet实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。
- TreeSet该类实现了Set接口,可以实现排序等功能。
- Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。Set 接口存储一组唯一,无序的对象。
在Collection中有添加(add),删除(remove),查找(get,contains),求大小(size)等操作
图
- Map 接口存储一组键值对象,提供key(键)到value(值)的映射
- HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
该类实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步 - TreeMap继承了AbstractMap,并且使用一颗树