如何准确地向 Long 类型列表追加新元素?

2026-05-07 23:581阅读0评论SEO问题
  • 内容介绍
  • 相关推荐

本文共计649个文字,预计阅读时间需要3分钟。

如何准确地向 Long 类型列表追加新元素?

在Java中,使用`List.of()`创建的是不可变列表,因此不能直接调用`add()`方法,否则会抛出`UnsupportedOperationException`。若需要可变列表,应改用`ArrayList`等可变集合实现。同时,注意命名规范和代码风格。

在 Java 中,List.of(E...) 是 Java 9 引入的便捷工厂方法,用于创建不可修改(unmodifiable) 的不可变列表。正如官方文档明确指出:“Returns an unmodifiable list”,这意味着一旦创建,其内容无法通过 add()、remove()、set() 等方法变更——任何修改尝试都会触发 UnsupportedOperationException。

你遇到的错误正是源于此:

List<Long> longList = List.of(3L); // ✅ 创建不可变列表 longList.add(2L); // ❌ 抛出 UnsupportedOperationException

✅ 正确做法:使用可变列表容器

要支持动态增删元素,必须使用可变(mutable)的 List 实现类,最常用的是 ArrayList。以下是两种推荐写法:

方式一:基于 List.of() 初始化后转为 ArrayList

import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { // 先创建不可变列表,再包装为可变 ArrayList List<Long> longList = new ArrayList<>(List.of(3L)); longList.add(2L); // ✅ 成功添加 System.out.println(longList); // 输出: [3, 2] } }

方式二:直接初始化空 ArrayList 并逐个添加

import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List<Long> longList = new ArrayList<>(); longList.add(3L); longList.add(2L); System.out.println(longList); // 输出: [3, 2] } }

⚠️ 其他重要注意事项

  • 命名规范:Java 变量名应遵循 lowerCamelCase(小驼峰),如 longList,而非 LongList(后者易被误认为类名);
  • 类型安全:List<Long> 明确声明泛型类型,确保编译期类型检查,避免装箱/拆箱意外;
  • 性能考量:若初始容量已知,建议使用 new ArrayList<>(initialCapacity) 避免多次扩容。

✅ 总结

场景 推荐方式
需要后续修改(增/删/改) 使用 new ArrayList<>(...) 或 new ArrayList<>()
仅读取、不修改(如配置常量) 可继续使用 List.of(...),兼顾简洁与安全性

牢记:List.of() = 不可变;可变操作 → 必须选用 ArrayList、LinkedList 等可变实现类。

本文共计649个文字,预计阅读时间需要3分钟。

如何准确地向 Long 类型列表追加新元素?

在Java中,使用`List.of()`创建的是不可变列表,因此不能直接调用`add()`方法,否则会抛出`UnsupportedOperationException`。若需要可变列表,应改用`ArrayList`等可变集合实现。同时,注意命名规范和代码风格。

在 Java 中,List.of(E...) 是 Java 9 引入的便捷工厂方法,用于创建不可修改(unmodifiable) 的不可变列表。正如官方文档明确指出:“Returns an unmodifiable list”,这意味着一旦创建,其内容无法通过 add()、remove()、set() 等方法变更——任何修改尝试都会触发 UnsupportedOperationException。

你遇到的错误正是源于此:

List<Long> longList = List.of(3L); // ✅ 创建不可变列表 longList.add(2L); // ❌ 抛出 UnsupportedOperationException

✅ 正确做法:使用可变列表容器

要支持动态增删元素,必须使用可变(mutable)的 List 实现类,最常用的是 ArrayList。以下是两种推荐写法:

方式一:基于 List.of() 初始化后转为 ArrayList

import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { // 先创建不可变列表,再包装为可变 ArrayList List<Long> longList = new ArrayList<>(List.of(3L)); longList.add(2L); // ✅ 成功添加 System.out.println(longList); // 输出: [3, 2] } }

方式二:直接初始化空 ArrayList 并逐个添加

import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List<Long> longList = new ArrayList<>(); longList.add(3L); longList.add(2L); System.out.println(longList); // 输出: [3, 2] } }

⚠️ 其他重要注意事项

  • 命名规范:Java 变量名应遵循 lowerCamelCase(小驼峰),如 longList,而非 LongList(后者易被误认为类名);
  • 类型安全:List<Long> 明确声明泛型类型,确保编译期类型检查,避免装箱/拆箱意外;
  • 性能考量:若初始容量已知,建议使用 new ArrayList<>(initialCapacity) 避免多次扩容。

✅ 总结

场景 推荐方式
需要后续修改(增/删/改) 使用 new ArrayList<>(...) 或 new ArrayList<>()
仅读取、不修改(如配置常量) 可继续使用 List.of(...),兼顾简洁与安全性

牢记:List.of() = 不可变;可变操作 → 必须选用 ArrayList、LinkedList 等可变实现类。