我有一个人员哈希集。一个人有名字、姓氏和年龄,例如:Person("Hans", "Man", 36)
我的任务是获取 17 岁以上人员的列表,按年龄对他们进行排序,并将名字与姓氏连接起来
比如:[“汉斯·曼”,“另一个名字”,“另一个名字”]
我刚刚被允许导入:
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.util.List;
import java.util.ArrayList;
我的想法是首先对它们进行排序,将名称映射到单独的流中并压缩它们,但它不起作用。
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()
终端操作将其收集到列表中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)