Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
Collection 接口存储一组不唯一,无序的对象 List 接口存储一组不唯一,有序(索引顺序)的对象 Set 接口存储一组唯一,无序的对象 Map接口存储一组键值对象,提供key到value的映射
public void addFirst(E e) :将指定元素插入此列表的开头。 public void addLast(E e) :将指定元素添加到此列表的结尾。 public E getFirst() :返回此列表的第一个元素。 public E getLast() :返回此列表的后一个元素。 public E removeFirst() :移除并返回此列表的第一个元素。 public E removeLast() :移除并返回此列表的后一个元素。 public E pop() :从此列表所表示的堆栈处弹出一个元素。 public void push(E e) :将元素推入此列表所表示的堆栈。 public boolean isEmpty() :如果列表不包含元素,则返回true
简单讲述:HashMap取得过程和存储过程类似,get(key),当得到这个key值,经过hashCode运算得到hash值,带到hash值后会进一步找到所在数组的位置,然后在用equals方法查找链表中对应的对象,并返回。 JDK8中,如果链表的存储长度大于8时,就是使用红黑树存储。
LinkedHashMap可以认为是***HashMap+LinkedList***,即它既使用HashMap操作数据结构,又使用LinkedList维护插入元素的先后顺序。
第一张图为LinkedHashMap整体结构图,第二张图专门把循环双向链表抽取出来,直观一点,注意该循环双向链表的头部存放的是最久访问的节点或最先插入的节点,尾部为最近访问的或最近插入的节点,迭代器遍历方向是从链表的头部开始到链表尾部结束,在链表尾部有一个空的header节点,该节点不存放key-value内容,为LinkedHashMap类的成员属性,循环双向链表的入口。
TreeMap 有序 速度没有hash快 默认递增排序对于红黑二叉树只是了解阶段,先不做总结遍历集合的三种方式: for循环,增强for,Iterator迭代器
类java.utils.Collections提供了对Set、List、Map进行排序、填充、查找元素的辅助方法
void sort(List)//对List容器内的元素排序,排序的规则是按照升序进行排序void shuffle(List)//对List容器内的元素进行随机排列。void reverse(List)//对List容器内的元素进行逆序排列void fill(List,Object)//用一个特定的对象重写整个List容器int binarySearch(List,Object)//对于顺序的List容器,采用则版查找的方法找特定对象