存储结构 | 顺序 | 唯一 | 查询 | 添加/删除 | |
ArrayList | 顺序表 | 有序(添加) | 不唯一 | 索引查询效率最高 | 效率低 |
LinkedList | 双向链表 | 有序(添加) | 不唯一 | 效率低 | 效率高 |
HashSet | 哈希表 | 无序 | 唯一 | 效率最高 | 效率最高 |
HashMap | 哈希表 | Key无序 | key唯一 | 效率最高 | 效率最高 |
LinkedHashSet | 哈希表+链表 | 有序(添加) | 唯一 | 效率最高 | 效率最高 |
LinkedHashMap | 哈希表+链表 | Key有序(添加) | key唯一 | 效率最高 | 效率最高 |
TreeSet | 红黑树 | 有序(自然) | 唯一 | 效率中等 | 效率中等 |
TreeMap | 红黑树 | 有序(自然) | key唯一 | 效率中等 | 效率中等 |
Collection | Map | |||
无序 不唯一 | Collection | Map.values() | ||
有序 不唯一 | ArrayList | LinkedList | ||
无序 唯一 | HashSet | HashMap keySet | ||
有序 唯一 | LinkedHashSet | TreeSet | LinkedHashMap keySet | TreeMap keySet |
示例:对于制作购物车可以使用的集合:
ArrayList 有序添加顺序 不适合大量添加和删除 * 但是考虑购物车中商品不是很多 * LinkedList 有序 适合添加和删除 查询效率低 * LiinkList不仅存数据还存节点,浪费一点空间 * HashSet 无序 * LinkedHashSet 有序 添加顺序 添加和删除效率高 查询效率高 无法判断商品条目是否存在-无法确定之前的数量 * TreeSet 有序不是添加顺序 * HashMap 无序 * LinkedHashMap 有序 是添加顺序 添加和删除效率高 * 能否判断条目是否存在,使用条目的id作为key,根据key获取条目 * TreeMap 有序但不是添加顺序