集合框架图板块简介
Collection
Collection是一个接口,它的存储形式以单一值存储 ,list(表) 和 set(集合) 和Queue(队列)实现了Collection接口。
list
list可以重复存储 , 可以插入多个null值, 是一个有序容器,可以保持每个元素的插入顺序。 它的实现类有 ArrayList(底层数据结构是数组)
,LinkedList(底层数据结构是链表) 和Vector。 只需要访问的话用ArrayList, 他的底层数据结构是数组,可以通过下标来直接获取元素;删除或者添加元素时用LinkedList,它直接删除某节点,不用对整体进行移动操作。
set
set:它不能重复存储, 只允许插入一个null值, 是一个无序容器。 set接口的实现类有HashSet ,LinkedHashSet 和TreeSet。
Queue
Queue是队列,涉及到优先级队列,大根堆和小根堆。
HashSet
HashSet基于HashMap实现,不能保证数据有序 ; (应用场景:数据去重,数据无重复存储)
LinkedHashSet
LinkedHashSet 可以保证数据有序; (应用场景:数据去重,需按顺序访问的时候)
TreeSet
TreeSet底层封装的是TreeMap,另外还实现了SortedSet接口,因此TreeSet是根据其compare()和compareTo()的定义进行排序的有序容器。(应用场景:数据去重,需要排序的情况下)
Iterator
Iterator是所有集合共有的迭代器(提供一种方法,来访问集合(容器),对集合进行遍历来达到对集合的便利访问与集合底层数据结构进行解耦)。
LinkIterator
LinkIterator是list特有的迭代器,他可以实现双向遍历,他还提供了Set方法
Map
Map是一个接口,他的存储方式是以Key-Value键值对形式存储
Map接口的实现类有HashMap,LinkedHashMap,HashTable ,和TreeMap
HashMap
HashMap底层数据结构是数组加链表 ,以key-value键值对存储,key和value都可以为null, 它的线程不安全
LinkedHashMap
LinkedHashMap继承HashMap ,和HashMap特点类似 ,但他是一个双向链表,特殊的(boolean)accessOlder属性使它可以实现插入有序和访问有序,线程不安全
HashTable
HashTable继承AbstractMap, key和value都不能为null, 线程安全(因为有关键字sychronized修饰 ), 可以通过Enumeration进行遍历。
WeakHashMap
WeakHashMapMap的一个特殊实现(只要体现的是Java的四中引用:强引用,软引用,弱引用,虚引用),他自定义了一个queue的属性(用来存储被GC回收的键值对),当他的外部不再被引用时,垃圾回收器会将他回收;
TreeMap
TreeMap基于红黑树。
红黑树特点:
1.每个节点都只能是红色或黑色
2.根节点是黑色
3.每个叶节点是黑色的
4.如果一个节点是红的,则他两个子节点都是黑的。
也就是说在一条路径上不能出现相邻的两个红色节点。
5.从任一节点到每个叶子的所有路径都包含相同数目的黑色节点。
identityHashmap
identityHashmap允许key值重复,但必须是两个不同的对象。 (比较key的方法: identityHashMap应用 k1==k2 方法比较, 而不是像HashMap中的比较用k1.equals(k2)方法)
TreeSet
TreeSet通过Comparator或 Comparable 维护了一个排序顺序。
Collections
Collections是集合类的一个工具类/帮助类,它包含各种有关集合操作的静态多态方法,用于对集合中元素进行排序,搜索以及线程安全的操作。
Arrays
Arrays提供一些方法来操作数组(Arrays.CopyOf)。
LinkedHashMap介绍(特点,优势,和其他比较)
HashMap介绍
HashMap和HashTable的异同点