Java集合常见面试题
Java集合框架 集合框架底层数据结构总结 Arraylist 与 LinkedList 异同 是否保证线程安全 : ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 底层数据结构 : Arraylist 底层使用的是Object数组;LinkedList 底层使用的是双向链表数据结构; 插入和删除是否受元素位置的影响 : ① ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素 位置的影响 。 比如:执行 add(E e) 方法的时候, ArrayList 会默认在将指定的元素追加到此列表的末尾,这种 情况时间复杂度就是O(1)。但是如果要在指定位置 i 插入和删除元素的话( add(int index, E element) )时 间复杂度就为 O(n-i)。因为在进行上述操作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执行向后位/向 前移一位的操作。 ② LinkedList 采用链表存储,所以插入,删除元素时间复杂度不受元素位置的影响,都是 近似 O(1)而数组为近似 O(n) 。 是否支持快速随机访问 : LinkedList 不支持高效的随机元素访问,而 ArrayList 支持。快速随机访问就是通 过元素的序号快速获取元素对象(对应于 get(int index) 方法)。 内存空间占用 :