java面试-0220-HashSet、LinkedHashSet、TreeSet实现?和ArrayList区别?
HashSet:
基于 HashMap(键存元素,值固定为 Object),无序、不重复。
键可为 null,线程不安全,查询 O(1)。除了clone()、writeObject()、readObject()⾃定义外都⽤HashMap的⽅法
LinkedHashSet:
基于 LinkedHashMap,维护双向链表,有序,不重复。
键可为 null,线程不安全。
TreeSet:
基于 TreeMap(红黑树),按自然顺序(Comparable)或 Comparator 排序,不重复。
键不可为 null,线程不安全,查询 O(log n).
ArrayList:
基于动态数组,元素有序(按插入顺序),允许重复和 null 值。
按索引访问,线程不安全。查询 O(1),插入/删除 O(n),