杰瑞科技汇

Java List如何获取元素个数?

在 Java 中,获取 List 集合中元素的个数非常简单,主要使用 List 接口继承自 Collection 接口的 size() 方法。

Java List如何获取元素个数?-图1
(图片来源网络,侵删)

下面我将详细介绍几种常用方法,并提供代码示例。

使用 size() 方法(最常用、最推荐)

这是获取 List 元素个数最标准、最直接的方法。size() 方法返回 List 中当前包含的元素数量。

代码示例

import java.util.ArrayList;
import java.util.List;
public class ListSizeExample {
    public static void main(String[] args) {
        // 创建一个 ArrayList 并添加一些元素
        List<String> fruits = new ArrayList<>();
        fruits.add("Apple");
        fruits.add("Banana");
        fruits.add("Orange");
        // 使用 size() 方法获取元素个数
        int count = fruits.size();
        // 输出结果
        System.out.println("List 中的元素个数是: " + count); // 输出: List 中的元素个数是: 3
        // 添加一个元素后再次查看
        fruits.add("Grape");
        System.out.println("添加一个元素后,List 中的元素个数是: " + fruits.size()); // 输出: 添加一个元素后,List 中的元素个数是: 4
        // 移除一个元素后再次查看
        fruits.remove("Apple");
        System.out.println("移除一个元素后,List 中的元素个数是: " + fruits.size()); // 输出: 移除一个元素后,List 中的元素个数是: 3
    }
}

关键点

  • 返回值类型: size() 方法返回一个 int 类型的值。
  • length 的区别: 请不要混淆 List.size() 和数组的 length 属性。List 是一个集合接口,使用方法来获取大小;而数组是一个对象,使用 length 属性来获取其长度。
  • isEmpty() 的关系: list.size() 返回 0,则意味着 list.isEmpty() 返回 true

使用 stream().count() 方法(Java 8+)

从 Java 8 开始,你可以使用 Stream API 来获取元素的数量,这种方法更现代,并且在需要配合其他流操作时非常方便。

代码示例

import java.util.ArrayList;
import java.util.List;
public class ListStreamCountExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(10);
        numbers.add(20);
        numbers.add(30);
        numbers.add(40);
        // 使用 stream().count() 方法获取元素个数
        long count = numbers.stream().count();
        // 输出结果
        System.out.println("使用 stream().count() 获取的元素个数是: " + count); // 输出: 使用 stream().count() 获取的元素个数是: 4
    }
}

关键点

  • 返回值类型: stream().count() 方法返回一个 long 类型的值,这可以防止在处理非常大的集合(超过 Integer.MAX_VALUE)时发生整数溢出。
  • 适用场景: 当你已经在使用 Stream 进行其他操作(如过滤、映射)并需要同时计算数量时,这种方法非常方便,但如果只是为了获取大小,size() 方法更直接高效。

使用 toArray().length 方法(不推荐)

你也可以先将 List 转换为一个数组,然后使用数组的 length 属性来获取大小。这种方法非常不推荐,因为它会创建一个不必要的数组副本,浪费内存和时间。

Java List如何获取元素个数?-图2
(图片来源网络,侵删)

代码示例

import java.util.ArrayList;
import java.util.List;
public class ListToArrayLengthExample {
    public static void main(String[] args) {
        List<String> colors = new ArrayList<>();
        colors.add("Red");
        colors.add("Green");
        colors.add("Blue");
        // 不推荐的做法:转换为数组后获取 length
        // 这会创建一个包含所有元素的数组副本
        int count = colors.toArray().length;
        System.out.println("不推荐做法,元素个数是: " + count); // 输出: 不推荐做法,元素个数是: 3
    }
}

为什么不推荐?

  • 性能开销: toArray() 方法会遍历整个 List 并创建一个新数组,这是一个 O(n) 的操作,而 size() 方法是 O(1) 的(时间复杂度恒定)。
  • 代码可读性: list.size() 的意图比 list.toArray().length 更清晰、更直接。

总结与对比

方法 示例代码 返回类型 时间复杂度 推荐度 适用场景
size() list.size() int O(1) ⭐⭐⭐⭐⭐ (最推荐) 所有场景,仅用于获取元素个数。
stream().count() list.stream().count() long O(n) ⭐⭐⭐ 当你已经在使用 Stream API 进行链式操作时。
toArray().length list.toArray().length int O(n) (极不推荐) 几乎没有,应避免使用。

最佳实践

在 99% 的情况下,你应该使用 list.size() 来获取 List 中元素的个数,它是最简洁、最高效、最符合 Java 编码规范的方式。

Java List如何获取元素个数?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇