java 用liststream获取过滤后的数据
使用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/fnrk 著作权归作者所有。请勿转载和采集!