Java面试-ArrayList 和 LinkedList有什么区别

ArrayList和LinkedList都是Java中常用的集合类,它们都实现了List接口,但在内部实现上有一些区别,适用于不同的场景。

ArrayList:

  1. 基于数组实现: ArrayList内部使用数组来存储元素,因此它的底层是一个动态数组。
  2. 随机访问快速: 由于基于数组实现,ArrayList支持通过索引来直接访问元素,因此随机访问速度很快,时间复杂度为O(1)。
  3. 插入和删除效率低: 插入和删除元素时,需要移动数组中的其他元素,因此效率较低,时间复杂度为O(n)。
  4. 适用于随机访问和遍历: 由于支持随机访问,ArrayList适用于需要频繁随机访问和遍历元素的场景。

LinkedList:

  1. 基于双向链表实现: LinkedList内部使用双向链表来存储元素,每个节点包含一个数据元素和两个指针(前驱节点和后继节点)。
  2. 插入和删除效率高: 在链表中插入和删除元素时,只需要修改相邻节点的指针,因此效率较高,时间复杂度为O(1)。
  3. 随机访问效率低: 由于LinkedList不支持随机访问,需要从头节点或尾节点开始遍历,时间复杂度为O(n)。
  4. 适用于频繁插入和删除操作: 由于插入和删除操作效率高,LinkedList适用于需要频繁插入和删除操作的场景。

总结:

  • 如果需要频繁随机访问和遍历元素,使用ArrayList更合适。
  • 如果需要频繁插入和删除操作,使用LinkedList更合适。
  • 在选择时,还需要考虑数据规模、操作类型、性能需求等因素。

ArrayList 基础用法

import java.util.ArrayList;
public class Main {
  public static void main(String[] args) {
    ArrayList<String> tech = new ArrayList<String>();
    tech.add("Java");
    tech.add("SQL");
    tech.add("Redis");
    System.out.println(tech);
  }
}

LinkedList 基本用法

import java.util.LinkedList;

public class Main {
  public static void main(String[] args) {
    LinkedList<String> tech = new LinkedList<String>();
    tech.add("Java");
    tech.add("SQL");
    tech.add("Redis");
    System.out.println(tech);
  }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值