集合框架
java所有集合大体上可以分成两类:Collection 和 Map
一. Collection
List系列集合:添加的元素有序,可重复,有索引
Set系列集合: 添加的元素无序,不重复,无索引
ArrayList是一个动态数组,也是我们最常用的集合,是List类的典型实现。(vector同理)
LinkedList是采用双向循环链表实现,LinkedList是List接口的另一个实现,除了可以根据索引访问集合元素外,LinkedList还实现了Deque接口,可以当作双端队列来使用,也就是说,既可以当作“栈”使用,又可以当作队列使用。
HashSet底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性。
LinkedHashSet 底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。
TreeSet底层数据结构采用二叉树来实现,元素唯一且已经排好序,唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性。
二. Map
Map代表的是存储key-value对的集合,可根据元素的key来访问value。
HashMap Map接口基于哈希表的实现,是使用频率最高的用于键值对处理的数据类型。
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。