集合框架:分为Collection接口和Map接口
·Map接口:key-value键值对集合,键key唯一,值value允许重复
·Map接口常见实现类:
HashMap:无序,数据结构:数组+链表+红黑树
LinkedHashMap:有序,数据结构:数组+链表+红黑树,相较于HashMap多维护了一条双向链表。
TreeMap:按照key自动排序,数据结构:红黑树--有序的自平衡二叉树
Hashtable:无序、线程安全,性能低、((不允许使用null做key、不允许使用null做value)会导致空指针异常),数据结构:数组+链表
·Collection接口是一个单列集合,他的子接口有List接口和Set接口
·Set接口:是一个具体实现类,特点:无序,值唯一(不允许重复)
具体实现类:①HashSet类 ②LinkedHashSet类 ③TreeSet类
①HashSet类:特点:无序、值唯一,数据结构:HashMap
②LinkedHashSet类:特点:有序、值唯一,数据结构:LinkedHashMap
③TreeSet类:特点:自动排序、值唯一,数据结构:TreeMap
·List接口:特点:有序,允许重复
具体实现类:①ArrayList类②LinkedList类③Vector类
①ArrayList类:
数据结构:Object[] elementDate ,扩容:无参构造方法,数组的容量初始化为空,添加第一个元素时,数组的容量扩容为10,当容量不足时,数组的容量按照1.5倍扩容。
特点:适合遍历、查找
常用方法:add(E e):添加新元素
add(E e):添加新元素至集合的指定位置
addAll(Collection c):将c中的所有元素添加至list集合的尾部
addAll(int index,Collection c):将c中的所有元素添加至list集合的指定位置
get(int index):按照下标位置,获取元素
remove(int index):按照下标,删除元素
remove(Object value):按照值,删除元素
indexOf(Object o):按照值,查找元素下标
set(0, "范47"):修改元素
②LinkedList类:
数据结构:双向链表、链表由若干个Node对象组成、链表不扩容,每次添加元素时,都创建一个Node,并加入链表。
特点:适合插入、删除
常用方法:add():将新元素添加至链表的尾部
addFirst():将新元素添加至链表的头部
addLast():将新元素添加至链表的尾部
get():根据元素的下标位置,在链表中通过遍历,查找获取元素
getFirst():获取链表的头元素
getLast():获取链表的尾元素
remove():根据下标或值,在链表中删除元素
removeFirst():删除链表的头元素
removeLast():删除链表的尾元素
③Vector类:
数据结构:Object[] elementDate
特点:线程安全
子类:Stack类:特点:Stack是一个”栈”的实现类,具备First In Last Out先进后出的特点。
常用方法:push(E item):添加新元素(向栈顶添加)
E pop():获取元素(从栈顶获取并删除)
E peek():获取元素(从栈顶获取)