Java ArrayList 与 LinkedList 的灵活选择

Java ArrayList

Java ArrayList 类是一个可变大小的数组,位于 java.util 包中。

创建 ArrayList

import java.util.ArrayList;

ArrayList<String> cars = new ArrayList<String>(); // 创建一个 ArrayList 对象

添加元素

复制代码
cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");

访问元素

cars.get(0); // 获取第一个元素

修改元素

复制代码
cars.set(0, "Opel"); // 修改第一个元素

删除元素

复制代码
cars.remove(0); // 删除第一个元素
cars.clear(); // 删除所有元素

ArrayList 大小

复制代码
cars.size(); // 获取 ArrayList 大小

循环遍历 ArrayList

for 循环:

复制代码
for (int i = 0; i < cars.size(); i++) {
  System.out.println(cars.get(i));
}

for-each 循环:

复制代码
for (String car : cars) {
  System.out.println(car);
}

使用其他类型

复制代码
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(10);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(25);

对 ArrayList 进行排序

复制代码
import java.util.Collections;
Collections.sort(cars); // 对字符串的 ArrayList 进行排序
Collections.sort(myNumbers); // 对整数的 ArrayList 进行排序

ArrayList 是 Java 中常用的数据结构,它可以存储各种类型的数据,并且可以根据需要调整大小。

ArrayList 的优势:

  • 可变大小
  • 可以存储各种类型的数据
  • 提供多种方法来访问、修改和删除元素
  • 可以使用 Collections 类进行排序

ArrayList 的劣势:

  • 速度比数组慢
  • 可能会浪费内存空间

建议:

  • 当需要存储可变大小的数据集合时,使用 ArrayList
  • 当需要快速访问数据时,使用数组。
  • 当需要存储大量数据时,考虑使用其他数据结构,例如 HashMap

Java LinkedList

LinkedList 类与 ArrayList 类相似,但它们之间也有一些重要的区别。

创建 LinkedList

java 复制代码
// 导入 LinkedList 类
import java.util.LinkedList;
public class Main {
    public static void main(String[] args) {
        LinkedList<String> cars = new LinkedList<>();
        cars.add("Volvo");
        cars.add("BMW");
        cars.add("Ford");
        cars.add("Mazda");
        System.out.println(cars);
    }
}

ArrayList 与 LinkedList

相同点:

  • 它们都实现了 List 接口,因此它们具有相同的方法。
  • 它们都可用于存储各种类型的数据。
  • 它们都允许您添加、删除和修改元素。

不同点:

  • ArrayList 使用数组存储数据,而 LinkedList 使用链表存储数据。
  • ArrayList 通常更快,因为它可以直接访问元素。
  • LinkedList 更灵活,因为它可以更轻松地插入和删除元素。

何时使用:

  • 如果您需要快速访问列表中的随机元素,请使用 ArrayList
  • 如果您需要经常插入和删除元素,请使用 LinkedList

LinkedList 方法

LinkedList 提供了一些 ArrayList 没有的方法,这些方法可以更有效地执行某些操作:

方法 描述
addFirst() 将元素添加到列表的开头。
addLast() 在列表的末尾添加元素。
removeFirst() 从列表的开头删除元素。
removeLast() 从列表的末尾删除元素。
getFirst() 获取列表开头的元素。
getLast() 获取列表末尾的元素。

示例

复制代码
// 添加元素到列表的开头
cars.addFirst("Toyota");
// 添加元素到列表的末尾
cars.addLast("Mercedes");
// 删除列表开头的元素
cars.removeFirst();
// 删除列表末尾的元素
cars.removeLast();
// 获取列表开头的元素
String firstCar = cars.getFirst();
// 获取列表末尾的元素
String lastCar = cars.getLast();

LinkedList 是一种灵活的数据结构,可以有效地执行某些操作。如果您需要经常插入和删除元素,LinkedList 是一个不错的选择。

相关推荐
lly202406几秒前
SQL ROUND() 函数详解
开发语言
大宝剑17010 分钟前
python环境安装
开发语言·python
why技术15 分钟前
从18w到1600w播放量,我的一点思考。
java·前端·后端
lly20240623 分钟前
CSS3 多媒体查询
开发语言
间彧25 分钟前
Redis Cluster vs Sentinel模式区别
后端
间彧28 分钟前
🛡️ 构建高可用缓存架构:Redis集群与Caffeine多级缓存实战
后端
间彧29 分钟前
构建本地缓存(如Caffeine)+ 分布式缓存(如Redis集群)的二级缓存架构
后端
夫唯不争,故无尤也31 分钟前
JavaWeb流式传输速查宝典
java·流式传输
苏小瀚1 小时前
算法---位运算
java·算法
天***88961 小时前
js封装一个双精度算法实现
开发语言·前端·javascript