gpt4 book ai didi

Java 流压缩两个列表

转载 作者:行者123 更新时间:2023-12-05 00:59:30 24 4
gpt4 key购买 nike

我有一个人的 HashSet。一个人有一个名字、姓氏和年龄,例如:Person("Hans", "Man", 36)

我的任务是获取 17 岁以上人员的列表,按年龄对他们进行排序,然后将 firstName 与 lastName 连接起来喜欢:[“汉斯曼”,“另一个名字”,“另一个名字”]

我只允许导入:

导入 java.util.stream.Stream;
导入 java.util.stream.Collectors;
导入 java.util.List;
导入 java.util.ArrayList;

我的想法是先对它们进行排序,将名称映射到单独的 Streams 中并压缩它们,但它不起作用。

public static void getNamesOfAdultsSortedByAge(Stream<Person> stream){

Stream<Person> result = stream;
Stream<Person> result1 = result.filter(p -> p.getAge() >= 18)
.sorted((x, y) -> Integer.compare(x.getAge(),y.getAge()));


Stream<String> firstName = result1.map(Person::getFirstName);
Stream<String> lastName = result1.map(Person::getLastName);

Stream<String> result3 = concat(firstName, lastName);

List<String> result4 = result3.collect(Collectors.toList());

System.out.println(result4);
}

提前谢谢你

最佳答案

你可以这样做:

public static void getNamesOfAdultsSortedByAge(Stream<Person> stream) {
List<String> sorted = stream.filter(p -> p.getAge() >= 18)
.sorted((x, y) -> Integer.compare(x.getAge(),y.getAge()))
.map(e -> e.getFirstName() + " " + e.getLastName())
.collect(Collectors.toList());
System.out.println(sorted);
}

这里我们只是通过连接名字和姓氏来map排序的流,之后我们使用.collect()终端操作将它收集到一个列表。

关于Java 流压缩两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53537160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com