返回

List 的“马甲”——Arrays 私有内部类

后端

List 揭秘:深入理解 java.util.Listjava.util.Arrays.List

想象一下,你有一个工具箱,里面装满了各种螺丝刀。当你想拧紧螺丝时,你会选择正确的螺丝刀,因为每种螺丝刀都有不同的用途。同样,在 Java 中,我们也有不同的 List 实现,每一种都针对特定的目的进行了优化。

认识 java.util.List:有序元素的超级工具箱

java.util.List 是 Java 中最常用的 List 实现。它就像一个超级工具箱,里面装满了各种元素,这些元素可以按顺序排列。你可以添加、删除、修改元素,就像用螺丝刀拧紧或松开螺丝一样。List 有多种实现,包括 ArrayListLinkedListVector,每一种实现都有自己独特的优点。

遇见 java.util.Arrays.List:只读数组的转换魔术师

java.util.Arrays.List 是另一个 List 实现,但它不是超级工具箱,而是一个转换魔术师。它的作用是将数组(本质上是一个元素的无序集合)转换为一个 List。为什么需要这样做呢?因为有时我们手头只有一组数据,而这些数据存储在一个数组中,但我们需要使用 List 提供的便利功能,比如索引访问和迭代。Arrays.List 就派上用场了,它可以挥动魔棒,把数组变成一个只读的 List

两种 List 的对比:工具箱与魔术师

特性 java.util.List java.util.Arrays.List
可修改性 可修改 只读
元素访问 索引访问 索引访问
实现类 ArrayListLinkedListVector
用途 存储和操作有序元素集合 将数组转换为 List

什么时候使用 java.util.List

当你需要一个可以修改的有序元素集合时,比如购物清单、学生姓名列表或待办事项列表,就使用 java.util.List

什么时候使用 java.util.Arrays.List

当你手头有一组数据存储在数组中,但你想使用 List 的便利功能时,就使用 java.util.Arrays.List

示例代码:螺丝刀与魔术师在行动

// 使用 `java.util.List` 创建一个可修改的元素集合
List<String> names = new ArrayList<>();
names.add("John");
names.add("Mary");
names.remove("John");

// 使用 `java.util.Arrays.List` 将数组转换为只读 `List`
int[] numbers = {1, 2, 3};
List<int> numbersList = Arrays.asList(numbers);

// 遍历 `List`
for (String name : names) {
    System.out.println(name);
}

总结:选择正确的 List

java.util.Listjava.util.Arrays.List 是 Java 中两种不同的 List 实现,各有其优缺点。根据你的具体需求,选择正确的 List 实现就像选择正确的螺丝刀。如果需要一个可修改的有序元素集合,那就使用 java.util.List,而如果需要将数组转换为 List,那就使用 java.util.Arrays.List

常见问题解答

  1. 我可以同时使用 java.util.Listjava.util.Arrays.List 吗?
    是的,可以。它们是不同的工具,可以根据需要使用。

  2. java.util.Listjava.util.Arrays.List 之间有哪些其他区别?
    java.util.List 是一个接口,而 java.util.Arrays.List 是一个私有内部类。java.util.List 有多个实现类,而 java.util.Arrays.List 没有。

  3. 我应该什么时候使用 List,什么时候使用 Set
    List 存储有序元素,而 Set 存储无序且唯一的元素。如果需要存储不重复的元素,就使用 Set

  4. 我可以在 java.util.Arrays.List 上使用 stream() 方法吗?
    是的,可以。java.util.Arrays.List 实现 List 接口,List 接口有 stream() 方法。

  5. 如何将 java.util.Arrays.List 转换为可修改的 List
    你可以使用 Collectors.toList() 方法将 java.util.Arrays.List 转换为 java.util.List