Collection
List(有序,可以重复)
有序 :通过传入集合的顺序,可以进行排序
重复: 通过equals来判断进行重复
- ArrayList(动态数组,方便获取元素)
ArrayList的扩容机制,每次扩容50%左右
- LinkedList(链表,方便插入,删除)
ArrayList和LinkedList的方法一样,但是性能不同。
- Statck
- Vector
set(无序,不可以重复)
- HashSet(hash算法实现的)
- TreeSet
- LinkedHashSet
Map(key-value)接口的实现类
它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。
- HashMap
HashMap基于Hash算法实现的,我们通过put(key,value)存储数据,get(key)取数据,当传入key的时候,HashMap会根据key.hashCode()计算hash值,根据hash值将value保存再bucket中(以数组的形式保存)。当我们计算出的hash值相同时,我们称为hash冲突,HashMap的做法是用链表和红黑树存储相同的hash值对应的value。当我们的hash冲突的个数比较少(阈值为8.),就使用链表,比较多就使用红黑树。
- TreeMap
-Hashtable
-ConcurentHashMap
-Properties
Collections(操作集合的工具类,sort方法)
Queue(队列)
队列是常用的数据结构,可以将队列堪称是特殊的线性表,队列只能从一端添加元素(offer),另 一端取出元素(poll)
队列遵循先进先出的原则(FIFO, first in first out)
Queue是jdk中的接口, LinkedList是Queue的实现类。
Deque(栈)
Deque是Queue的子接口, 被称为双端队列,即可以从队列的两端入队(offer),出队 (poll),LinkedList实现了该接口
将Deque限定为只能从一端出队和入队,就可以模拟栈的数据结构,栈数据结构,入栈为push, 出栈为pop.
栈遵循先进后出的原则FILO(first int last out)