java中Arraylist和Linkedlist区别 - 面试宝典

举报
皮牙子抓饭 发表于 2023/08/10 21:33:04 2023/08/10
【摘要】 ArrayList和LinkedList是Java中两种常用的集合类,它们在实现上有一些区别。数据结构:ArrayList是基于数组实现的动态数组,LinkedList是基于链表实现的双向链表。插入和删除操作:ArrayList的插入和删除操作需要移动元素,因为它是基于数组实现的,而LinkedList的插入和删除操作只需要修改指针的指向,因为它是基于链表实现的。所以在插入和删除元素频繁的情...

ArrayList和LinkedList是Java中两种常用的集合类,它们在实现上有一些区别。

  1. 数据结构:ArrayList是基于数组实现的动态数组,LinkedList是基于链表实现的双向链表。
  2. 插入和删除操作:ArrayList的插入和删除操作需要移动元素,因为它是基于数组实现的,而LinkedList的插入和删除操作只需要修改指针的指向,因为它是基于链表实现的。所以在插入和删除元素频繁的情况下,LinkedList的性能更好。
  3. 随机访问:ArrayList支持随机访问,可以通过索引直接访问元素,时间复杂度为O(1);而LinkedList不支持随机访问,需要从头节点或尾节点开始遍历链表,时间复杂度为O(n)。
  4. 内存占用:ArrayList的内存占用比LinkedList小,因为ArrayList只需要存储元素和数组长度,而LinkedList需要存储元素、前后指针和链表长度。 根据具体的使用场景,选择ArrayList还是LinkedList有不同的考虑因素。如果需要频繁进行插入和删除操作,且对随机访问性能要求不高,可以选择LinkedList;如果需要频繁进行随机访问操作,且对插入和删除操作的性能要求不高,可以选择ArrayList。

以下是使用ArrayList和LinkedList的示例代码: 使用ArrayList:

javaCopy codeimport java.util.ArrayList;
public class ArrayListExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        // 添加元素
        list.add("Java");
        list.add("Python");
        list.add("C++");
        // 获取元素
        System.out.println("第一个元素:" + list.get(0));
        // 修改元素
        list.set(1, "JavaScript");
        // 删除元素
        list.remove(2);
        // 遍历元素
        for (String element : list) {
            System.out.println(element);
        }
    }
}

使用LinkedList:

javaCopy codeimport java.util.LinkedList;
public class LinkedListExample {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        // 添加元素
        list.add("Java");
        list.add("Python");
        list.add("C++");
        // 获取元素
        System.out.println("第一个元素:" + list.getFirst());
        // 修改元素
        list.set(1, "JavaScript");
        // 删除元素
        list.removeLast();
        // 遍历元素
        for (String element : list) {
            System.out.println(element);
        }
    }
}

以上示例代码展示了如何使用ArrayList和LinkedList进行元素的添加、获取、修改和删除操作,以及遍历元素。根据具体的需求,可以选择使用ArrayList或LinkedList来完成相应的操作。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。