📚 分类
集合
🕵🏽‍♀️ 问题描述
List和LinkedList和Arraylist的关系与区别?
👨‍🏫 问题讲解
❒ List‌

✔ List是一个接口,它定义了各种操作列表的方法,如添加、删除、查找等。
✔ List本身不直接对应内存中的存储结构,而是通过其实现类(如ArrayList和LinkedList)来实现具体的存储方式。

❒‌ ArrayList‌

✔ ArrayList是基于动态数组实现的,
✔ 它的元素在内存中是连续存储的。
✔ 每个元素占用固定大小的内存空间,
✔ 当元素超出当前数组容量时,会进行扩容操作,通常是将当前数组的大小增加到原来的1.5倍‌。
✔ 默认尾插

‌❒ LinkedList‌

✔ LinkedList是基于双向链表实现的,
✔ 它的元素在内存中不是连续存储的。
✔ 每个元素通过指针连接到前一个和后一个元素,因此插入和删除操作不需要移动其他元素,只需改变指针的指向即可‌。
✔ 默认尾插

‌❒ 性能差异

‌✔ 查找‌:由于ArrayList的元素是连续存储的,可以通过索引直接访问,因此查找效率较高。而LinkedList需要通过遍历链表来查找元素,效率较低‌。
✔‌ 插入和删除‌:LinkedList在插入和删除操作上具有较高的效率,因为它只需要改变指针的指向,而不需要移动其他元素,在任何位置添加元素的时间复杂度均为O(1)。而ArrayList在列表末尾添加元素的时间复杂度为O(1),但在中间或头部添加元素的时间复杂度为O(n)。
‌✔ 内存占用‌:由于LinkedList的每个元素只需要存储数据和指针信息,而不需要像ArrayList那样预留连续的空间,因此LinkedList通常比ArrayList更节省内存‌。
✔ 综上所述,ArrayList和LinkedList在内存中的存储方式不同,这直接影响它们的性能特点和应用场景。
🏳️‍🌈 问题总结
ArrayList‌(动态数据):有序且内存连续,会扩容(1.5倍),查找快,增删慢
LinkedList(双向链表):有序且内存不连续,节省存储空间,查找慢,增删快
📖 问题信息
📈 浏览次数:8 | 📅 更新时间:2025-12-01 22:02:01
📦 创建信息
🏷️ ID:82 | 📅 创建时间:2024-11-15 09:27:25