集合接口:Collection、Map
1.Collection接口下面存在的接口有:List,Set.
1.1.List集合接口的实现类有:AarryList、Vector、LinkedList、AbstractList、SynchronizedList等
1.2.Set集合接口的实现类有:HashSet、AbstractSet、SynchronizedSet、LinkedHashSet,TreeSet等
2.Map接口:
2.1.Map集合接口的实现类有:HashMap、RefereneMap、LinkedHashMap、TableMap、CopyOnWriteHashMap等
一.List集合
1.ArrayList知识点
1.继承实现关系:
1 | public class ArrayList<E> extends AbstractList<E> |
2.属性字段理解:
2.1 DEFAULT_CAPACITY
1 | /** |
2.2 EMPTY_ELEMENTDATA
1 | /** |
2.3 DEFAULTCAPACITY_EMPTY_ELEMENTDATA
1 | /** |
2.4 elementData
1 | /** |
2.5 size
1 | /** |
3.方法的解读
ArrayList(int initialCapacity)
1 | /** |
ArrayList()
1 | /** |
ArrayList(Collection<? extends E> c)
1 | /** |
trimToSize
1 | /** |
elementData(int index)
1 | E elementData(int index) { |
get(int index)
1 | public E get(int index) { |
set(int index, E element)
1 | /** |
add(E e)
1 | /** |
add(int index, E element)
1 | public void add(int index, E element) { |
remove(int index)
1 | public E remove(int index) { |
remove(Object o)
1 | public boolean remove(Object o) { |
4.知识总结:
线程安全方面:线程不安全的
是有序的、可以存Null值。
容量扩容方面:默认容量为10,扩容的方法是copyOf(), 扩容大小为50%,细节看add方法)
底层结构:Objcet类型的数组,Object []
2.Vector
和ArrayList基本上一样。
- 线程安全方面:线程安全的,它的方法被synchronized修饰
- 是有序的、可以存Null值。
- 容量扩容方面:默认容量为10,扩容的方法是copyOf(), 扩容大小为原来的1倍,细节看add方法)
- 底层结构:Objcet类型的数组,Object []
3.LinkedList
1.继承实现关系
1 | public class LinkedList<E> |
2.字段属性理解
1 | transient int size = 0; |
3.方法的解读
双向链表Node结构
1 | private static class Node<E> { |
LinkedList()
1 | /** |
linkLast
1 | /** |
linkBefore
1 | /** |
node(int index)
1 | /** |
add(int index, E element)
1 | /** |
set(int index, E element)
1 | public E set(int index, E element) { |
remove(int index)
1 | public E remove(int index) { |
unlink(Node x)删除节点
1 | 总体步骤理解:删除指定索引的数据其实是将next、prev及本身item的引用置为null, |
4.知识总结
- 线程安全方面:线程不安全的
- 是有序的、可以存Null值。
- 容量扩容方面:无扩容、默认链表大小为0
- 底层结构:Node
的双向链表结构
二.Set集合
1.HashSet知识点
1.HashSet继承实现关系
1 | //继承了AbstractSet类、实现了Set、和Cloneabl、Serializable接口 |
2.字段属性理解
1.HashMap
1 | HashSet数据结构就是用的HashMap只不过不需要传value值 |
PRESENT
1 | 默认作为Map的value |
3.方法解读
HashSet()
1 | /** |
add(E e)
1 | public boolean add(E e) { |
remove(Object o)
1 | public boolean remove(Object o) { |
1.TreeSet知识点
1.TreeSet的继承实现关系
1 | //继承了AbstractSet类、实现了NavigableSet接口、这个接口又继承了SortedSet接口所以这个TreeSet是有序的 |
2.字段属性知识
1.NavigableMap
1 | TreeSet的底层结构是NavigableMap |
2.PRESENT
1 | NavigableMap中Vaule的值。 |
3.方法解读
TreeSet()//先熟悉HashMap及树知识再来理解TreeSet的知识
1 | //TreeSet的默认构造函数 |
add(E e)
1 | public boolean add(E e) { |
4.知识总结
三.Map集合
1.HashMap
1.继承实现类
1 | public class HashMap<K,V> extends AbstractMap<K,V> |
2.字段属性说明
DEFAULT_INITIAL_CAPACITY(默认初始容量16)
1 | /** |
MAXIMUM_CAPACITY(Map容量的最大值2的30幂次方)
1 | /** |