ListSet

Java 集合框架

bmll2

List

LinkedList

见队列中 LinkedList 介绍

ArrayList 和 LinkedList

ArrayList 和 Linkedlist 区别?

ArrayList

  1. 优点:ArrayList 是基于动态数组实现的,地址连续,查询操作效率高
  2. 缺点:因为地址连续,ArrayList 要移动数据,所以插入和删除操作效率比较低

LinkedList

  1. 优点:LinkedList 是基于链表的,地址是任意的,不需要连续的内存地址空间,对新增和删除操作比 ArrayList 效率高。LinkedList 适用于要头尾操作或插入指定位置的场景
  2. 缺点:LinkedList 要移动指针,查询操作性能比较低

适用场景

ArrayList 和 LinkedList 初始化容量是多少?如何扩容的?

Set

HashSet 和 TreeSet

TreeSet
TreeSet 是基于红黑树实现的,TreeSet 中的数据是自动排好序的,不允许放 null;底层实现是 TreeMap
HashSet
HashSet 是基于哈希表实现的,HashSet 中的数据是无序的可以放入 null,但只能放入一个 null;HashSet 要求放入的对象必须实现 hashCode 方法,因为放入的对象是以 hashCode 码作为标识的;底层实现是 HashMap
适用场景
HashSet 基于 hash 算法实现的,性能通常由于 TreeSet,为快速查找而设计的,一般情况下我们都应该使用 HashSet;只有需要排序时,才使用 TreeSet

CopyOnWriteArraySet