• Java中ArrayList和LinkedList区别


    一、ArrayList简单使用

    在Java中,ArrayList是一种常用的动态数组实现,它允许你存储和操作一系列元素。以下是如何使用ArrayList的基本示例:

    首先,确保你导入了正确的包:

    import java.util.ArrayList;
    
    • 1

    然后,你可以创建一个ArrayList对象并开始使用它:

    // 创建一个新的ArrayList
    ArrayList<String> arrayList = new ArrayList<>();
    
    // 添加元素到ArrayList
    arrayList.add("苹果");
    arrayList.add("香蕉");
    arrayList.add("橙子");
    
    // 获取元素
    String firstElement = arrayList.get(0);
    String secondElement = arrayList.get(1);
    
    System.out.println("第一个元素:" + firstElement);
    System.out.println("第二个元素:" + secondElement);
    
    // 修改元素
    arrayList.set(1, "草莓");
    
    // 删除元素
    arrayList.remove(0); // 通过索引删除第一个元素
    
    // 迭代ArrayList
    for (String fruit : arrayList) {
        System.out.println(fruit);
    }
    
    // 获取ArrayList的大小
    int size = arrayList.size();
    System.out.println("ArrayList的大小:" + size);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    这只是ArrayList的一些基本用法。你可以使用它执行许多其他操作,如在指定位置插入元素、查找元素的索引、检查是否包含某个元素等。

    ArrayList是一个非常灵活和常用的数据结构,适用于大多数情况,尤其是当你需要随机访问元素的时候。由于它是一个动态数组,它可以根据需要自动扩展大小,因此你不需要在开始时指定固定的大小。

    二、LinkedList简单使用

    Java中的LinkedList是一种双向链表数据结构,它实现了List接口,允许你在列表中存储和操作元素。以下是如何使用LinkedList的基本示例:

    首先,确保你导入了正确的包:

    import java.util.LinkedList;
    
    • 1

    然后,你可以创建一个LinkedList对象并开始使用它:

    // 创建一个新的LinkedList
    LinkedList<String> linkedList = new LinkedList<>();
    
    // 添加元素到LinkedList
    linkedList.add("苹果");
    linkedList.add("香蕉");
    linkedList.add("橙子");
    
    // 获取元素
    String firstElement = linkedList.getFirst();
    String lastElement = linkedList.getLast();
    String secondElement = linkedList.get(1);
    
    System.out.println("第一个元素:" + firstElement);
    System.out.println("最后一个元素:" + lastElement);
    System.out.println("第二个元素:" + secondElement);
    
    // 修改元素
    linkedList.set(1, "草莓");
    
    // 删除元素
    linkedList.removeFirst();
    linkedList.removeLast();
    linkedList.remove("橙子");
    
    // 迭代LinkedList
    for (String fruit : linkedList) {
        System.out.println(fruit);
    }
    
    // 获取LinkedList的大小
    int size = linkedList.size();
    System.out.println("LinkedList的大小:" + size);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    这只是LinkedList的一些基本用法。你可以使用它执行许多其他操作,如在指定位置插入元素、查找元素的索引、反转列表等。LinkedList适用于需要频繁在列表开头和结尾进行插入和删除操作的情况,因为它可以在O(1)的时间复杂度内执行这些操作。但是,在中间插入或删除元素时,它的性能可能较差,因为需要遍历到目标位置。

    请根据你的具体需求来选择数据结构,有时ArrayList可能更适合。

    三、ArrayListLinkedList区别

    ArrayListLinkedList是Java中两种不同的列表数据结构,它们在内部实现和性能方面有一些重要的区别。

    1. 内部实现:
      • ArrayListArrayList内部使用数组来存储元素。这意味着它适用于需要随机访问元素的情况,因为可以通过索引快速定位元素。
      • LinkedListLinkedList内部使用双向链表来存储元素。这使得它在插入和删除元素时非常高效,特别是在列表的开头或中间。但是,它的随机访问性能较差,因为需要从列表的开头或结尾开始遍历链表才能找到特定位置的元素。
    2. 插入和删除操作:
      • ArrayList:插入和删除操作在数组中间通常较慢,因为需要将后续元素向后移动或向前移动,以腾出空间或填补空洞。在列表末尾进行这些操作较为高效。
      • LinkedList:插入和删除操作在链表中非常高效,无论是在开头、中间还是结尾,因为只需调整链表中的指针。
    3. 随机访问性能:
      • ArrayList:由于内部使用数组,ArrayList支持快速的随机访问,可以通过索引直接访问元素。时间复杂度为O(1)。
      • LinkedList:在链表中进行随机访问较慢,因为需要遍历列表中的节点,时间复杂度为O(n),其中n是元素的索引。
    4. 内存消耗:
      • ArrayList:通常比LinkedList更节省内存,因为它只需存储元素和一个动态数组的固定大小。
      • LinkedList:由于需要存储链表节点以及对元素的引用,可能占用更多内存。

    根据你的使用情况,你可以选择使用ArrayListLinkedList。如果你需要频繁执行插入和删除操作,特别是在列表的中间位置,那么LinkedList可能更合适。如果你需要频繁随机访问元素,那么ArrayList可能更适合。

    先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
    码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!

  • 相关阅读:
    C#几种截取字符串的方法
    循环神经网络 - 文本预处理
    leetcode 线程题 1114. 按序打印
    【C++】STL——stack&queue模拟实现
    python爬虫练习,爬取iview,element组件库图标名称
    2.0 Python 数据结构与类型
    微前端三:qiankun 协作开发和上线部署
    【ARM CoreLink 系列 4 -- NIC-400 控制器详细介绍】
    pytorch lighting: Trying to resize storage that is not resizable
    一文彻底搞懂ZAB算法,看这篇就够了!!!
  • 原文地址:https://blog.csdn.net/qq_54693844/article/details/133936196