欢迎访问宙启技术站
智能推送

Java中如何使用流式API函数库实现集合操作?

发布时间:2023-05-27 18:56:11

Java 8引入了流式API函数库,可以简化对集合的操作。下面将介绍如何使用流式API函数库实现如下几个常用的集合操作:过滤、映射、排序、归约、统计。

1. 过滤

过滤操作可以根据某些条件来筛选集合中的元素。如下面的例子中,我们将从一个整数集合中筛选出所有的偶数:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream()
    .filter(n -> n % 2 == 0)
    .collect(Collectors.toList());

这段代码中,numbers是一个整数集合,我们使用stream()方法将其转成一个流,然后使用filter()方法对每个元素进行筛选操作。筛选条件为n % 2 == 0,表示只保留所有的偶数。最后,我们使用collect()方法将筛选出来的结果收集到一个新的集合中。

2. 映射

映射操作将一个集合中的元素转换成另外一种形式。例如,我们可以将一个字符串集合中的每个字符串都转成大写字母:

List<String> words = Arrays.asList("hello", "world");
List<String> upperWords = words.stream()
    .map(s -> s.toUpperCase())
    .collect(Collectors.toList());

在这段代码中,我们将字符串集合words转成一个流,然后使用map()方法将每个字符串转成大写字母。最后,我们使用collect()方法将转换后的结果存储到一个新的集合中。

3. 排序

排序操作可以将一个集合中的元素按照一定的规则进行排序。例如,我们可以将一个字符串集合按照字符串长度从小到大排序:

List<String> words = Arrays.asList("hello", "world", "good", "bye");
List<String> sortedWords = words.stream()
    .sorted((s1, s2) -> s1.length() - s2.length())
    .collect(Collectors.toList());

在这段代码中,我们使用sorted()方法将字符串集合words进行排序。排序规则为按照字符串长度从小到大排序。这里我们传入了一个Lambda表达式作为参数,其中s1和s2表示集合中的两个元素。

4. 归约

归约操作可以将一个集合中的元素封装成一个单独的值。例如,我们可以计算一个整数集合中所有元素的和:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int sum = numbers.stream()
    .reduce(0, (x, y) -> x + y);
System.out.println(sum); // 输出21

这段代码中,我们使用reduce()方法对整数集合numbers进行归约操作。初始值为0,我们将每个元素进行累加得到结果21。

5. 统计

统计操作可以对一个集合中的元素进行统计,例如计算元素个数、求和、最小值、最大值等。例如,我们可以计算一个整数集合的元素个数:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
long count = numbers.stream()
    .count();
System.out.println(count); // 输出6

这段代码中,我们使用count()方法对整数集合numbers进行统计操作,得到其元素个数。

综上所述,使用流式API函数库可以简化对集合的操作,使得代码更加简洁易懂。上文介绍了五种常用的集合操作,读者可以据此了解如何使用流式API函数库来进行集合操作。