Android开发 - List类中LinkedList实现类的元素存储与操作解析

什么是 LinkedList

  • LinkedListList 接口的一个具体实现类,它基于双向链表数据结构来实现元素的存储操作

主要特点

  1. 双向链表
    • LinkedList 使用双向链表作为底层数据结构,每个节点(Node)包含对前一个和后一个节点的引用。这使得在 LinkedList 中插入和删除元素的效率很高,因为只需要调整节点的引用即可
  2. 无需扩容
    • ArrayList 不同,LinkedList 不需要预先分配固定大小的空间,因为它不是基于数组实现的,它根据需要动态分配内存
  3. 插入和删除操作效率高
    • LinkedList 中,插入和删除元素的效率很高,特别是在列表的开头或中间插入、删除元素时。这是因为只需要调整相邻节点的引用,不涉及数组的移动操作
  4. 随机访问效率较低
    • ArrayList 不同,LinkedList 的随机访问效率较低。访问第 n 个元素需要从头或尾部开始遍历,直到找到对应的节点。因此,如果需要频繁进行随机访问操作,ArrayList 更适合。
  5. 适合频繁插入删除的场景
    • 因为 LinkedList 的插入和删除操作效率高,所以它特别适合在需要频繁插入和删除元素的场景中使用。

LinkedList 的使用

import java.util.LinkedList;

public class LinkedListExample {
    public static void main(String[] args) {
        // 创建一个 LinkedList
        List<String> linkedList = new LinkedList<String>();

        // 添加元素到链表尾部
        linkedList.add("Apple");
        linkedList.add("Banana");
        linkedList.add("Orange");

        // 在链表头部添加元素
        linkedList.addFirst("Grapes");

        // 在链表指定位置插入元素
        linkedList.add(2, "Mango");

        // 遍历链表并输出元素
        for (String fruit : linkedList) {
            System.out.println("Fruit: " + fruit);
        }

        // 删除链表头部元素
        linkedList.removeFirst();

        // 删除链表尾部元素
        linkedList.removeLast();

        // 删除指定位置的元素
        linkedList.remove(1);

        // 再次遍历链表并输出元素
        System.out.println("After removal:");
        for (String fruit : linkedList) {
            System.out.println("Fruit: " + fruit);
        }
    }
}
  • LinkedList 的灵活性和高效的插入、删除操作,适合于需要频繁修改集合内容的场景;但在需要频繁随机访问元素的情况下,建议选择 ArrayList
posted @ 2024-07-30 18:20  阿俊学JAVA  阅读(32)  评论(0编辑  收藏  举报