Java 使用 Stream API 过滤 List 数据
使用 Java 8 中的 Stream API 可以非常方便地对 List 中的元素进行过滤,示例代码如下:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<String> names = Arrays.asList('Jack', 'Jill', 'John', 'Jane');
// 过滤出以J开头的名字
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith('J'))
.collect(Collectors.toList());
System.out.println(filteredNames); // 输出 [Jack, Jill, John, Jane]
// 过滤出长度大于3的名字,并将其转换为大写形式
List<String> filteredAndUppercaseNames = names.stream()
.filter(name -> name.length() > 3)
.map(String::toUpperCase)
.collect(Collectors.toList());
System.out.println(filteredAndUppercaseNames); // 输出 [JACK, JILL, JOHN]
}
}
在上面的示例中,我们首先使用Arrays.asList方法创建了一个包含4个字符串的 List 对象,然后使用stream方法将其转换为一个 Stream 对象。
接着,我们使用filter方法对 Stream 对象进行过滤,只保留以 J 开头的字符串。使用collect方法将过滤后的元素收集到一个新的 List 对象中,并将其赋值给filteredNames变量。
我们还演示了如何同时使用filter和map方法,对元素进行多步操作。在上面的示例中,我们过滤出长度大于 3 的字符串,并将其转换为大写形式。最后将处理后的元素收集到一个新的 List 对象中,并将其赋值给filteredAndUppercaseNames变量。
需要注意的是,Stream 对象只能被消费一次。如果你需要对同一个 List 对象进行多次操作,需要重新创建 Stream 对象。
原文地址: https://www.cveoy.top/t/topic/odpy 著作权归作者所有。请勿转载和采集!