List
存 :以特定的索引存放元素,有序且可重复
取 :一般利用 for 循环,foreach 循环,Iterator 迭代器迭代,stream流( java 8)
List 接口有三个实现类:
- ArrayList 底层结构是数组,非线程安全,底层查询快,增删慢
- LinkedList 底层结构是链表,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。增删快,查询慢
- Vector 底层结构是数组,并且线程安全,增删慢,查询慢
Set
存 :无序且不可重复,元素在 set 中的位置由该元素的 HashCode 决定,其位置是固定的
取 :一般利用 foreach 循环,Iterator 迭代器迭代
Set 有两个实现类:
- HashSet 的底层由 HashMap 实现
- LinkedHashSet
SortedSet 接口有一个实现类 :
- TreeSet(底层由平衡二叉树实现)
Query 接口有一个实现类 :
- LinkList
Map
存 :保存键值对(key-value pair)的映射,映射关系可以是一对一(键值)或者多对一。Key 无序且不可重复,Value 可以重复
取 :需转换为 Set ,然后进行 Iterator 迭代器迭代,或转换为 Entry 对象进行 Iterator 迭代器迭代
Map 接口有三个实现类 :
- HashMap 是非线程安全的,但高效,支持 null
- HashTable 是线程安全的,但低效,不支持 null
- LinkeHashMap
Sortedmap 有一个实现类:
- TreeMap