Files
Hui-s-notebook/Java-Interview/集合/List面试问题.md
Lostecho c8f11d0488 update
2024-03-03 16:38:06 +08:00

1.4 KiB
Raw Blame History

title, date, mdate
title date mdate
List面试问题 2023-08-02 21:40 2023-08-06 18:04:07

List面试题

  1. ArrayList 和 Array 的区别 ArrayList 底层是 Array可以扩容只能存引用数据类型具有一些 API 方法

  2. ArrayList 和 LinkedList 增删插元素及区别

都不是线程安全的 ArrayList 底层为数组LinkedList 底层为双向链表 Array 在添加元素和删除元素和 LinkedList 受位置影响Array 添加时 Array 在末尾时 O1在指定位置 i 插入时是 O (n), Linked 在头尾插入为 O1在位置 i 插入为 On ArrayList 支持随机快速访问 ArrayList 空间连续在末尾会预留一定空间Linked 每个元素比 Array 大

  1. LinkedList 没有实现 randomSccess 接口,因为内存不连续性,只能通过指针访问,不支持随机快速访问

  2. ArrayList 扩容机制 Set面试问题.md 首先如果是无参构造器就创建一个空的 object 数组,有参数的就构建一个对应长度的数组,每次扩容 1.5 倍,添加时会先检查当前的容量,如果不足就会先扩容,将当前的元素复制到一个扩容之后的数组,删除元素时会将当前元素之前的元素和之后的元素合成一个新的数组,并返回当前的值

删除元素时返回 true 或 false删除下标的时候会返回当前下标对应的元素

与下表有关的操作都会检查下标是否越界