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

下面我将详细介绍几种常用方法,并提供代码示例。
使用 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 属性来获取大小。这种方法非常不推荐,因为它会创建一个不必要的数组副本,浪费内存和时间。

代码示例
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 编码规范的方式。

