diff --git a/notes/Java 容器.md b/notes/Java 容器.md index 1ab7c4c8..cdc3012d 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -2,7 +2,6 @@ * [一、概览](#一概览) * [Collection](#collection) * [Map](#map) - * [Java 1.0/1.1 容器](#java-1011-容器) * [二、容器中的设计模式](#二容器中的设计模式) * [迭代器模式](#迭代器模式) * [适配器模式](#适配器模式) @@ -29,16 +28,18 @@ ### 1. Set -- HashSet:基于 Hash 实现,支持快速查找,但是失去有序性; +- HashSet:基于哈希实现,支持快速查找,但不支持有序性操作,例如根据一个范围查找元素的操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。 -- TreeSet:基于红黑树实现,保持有序,但是查找效率不如 HashSet; +- TreeSet:基于红黑树实现,支持有序性操作,但是查找效率不如 HashSet,HashSet 查找时间复杂度为 O(1),TreeSet 则为 O(logn); -- LinkedHashSet:具有 HashSet 的查找效率,且内部使用链表维护元素的插入顺序,因此具有有序性。 +- LinkedHashSet:具有 HashSet 的查找效率,且内部使用链表维护元素的插入顺序。 ### 2. List - ArrayList:基于动态数组实现,支持随机访问; +- Vector:和 ArrayList 类似,但它是线程安全的; + - LinkedList:基于双向循环链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列和双端队列。 ### 3. Queue @@ -51,20 +52,14 @@