我有一个人的HashSet。一个人有一个名字,最后一个名字和年龄,比如:人(“汉斯”,“男人”,36)
我的任务是得到一份17岁以上的人的名单,按年龄对他们进行排序,并用姓氏来表示他们的名字,如:[“Hans Man”,“另一个名字”,“另一个名字”]
我只允许导入:
导入java.util.stream.流;导入java.util.stream.收集器;导入java.util.列表;导入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);
}
提前谢谢你
内部getNamesofadultsSortedBage
方法:
stream
.filter(p -> p.getAge() > 17)
.sorted(Comparator.comparingInt(Person::getAge))
.map(person -> person.getFirstName() + " " + person.getLastName())
.collect(Collectors.toList())
我想它应该适合你的需要filter
筛选只有18岁或以上的人,第二行排序由getAge
谓词给出,第三行仅将Person
实例映射到包含%firstName%%lastName%%
的字符串,第四行将结果收集到列表中。
这不起作用:
Stream<String> firstName = result1.map(Person::getFirstName);
Stream<String> lastName = result1.map(Person::getLastName);
在第一个映射
之后,流
的类型为字符串
,它不适合Person::getLastName
。您需要在第一个map()调用中进行连接。
你可以这样做:
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);
}
在这里,我们只是通过连接第一个名字和最后一个名字来映射已排序的流,之后我们使用。收集()
终端操作将其收集到列表中。
问题内容: 使用Google Guava(Google Commons),是否可以将两个大小相等的列表合并为一个列表,而新列表包含两个输入列表的复合对象? 例: 和 将输出: 问题答案: 从Guava 21开始,可以通过以下方式实现:
问题内容: 我有两个列表,每个列表具有相等数量的项目。这两个列表如下所示: 我正在寻找一个看起来像这样的清单: 我试图使用这样的东西: 合并两个列表列表的最佳方法是什么?提前致谢。 问题答案:
Ziplist 是由一系列特殊编码的内存块构成的列表, 一个 ziplist 可以包含多个节点(entry), 每个节点可以保存一个长度受限的字符数组(不以 \0 结尾的 char 数组)或者整数, 包括: 字符数组 长度小于等于 63 ()字节的字符数组 长度小于等于 16383 () 字节的字符数组 长度小于等于 4294967295 ()字节的字符数组 整数 4 位长,介于 0 至 12 之
问题内容: 我有一个熊猫数据框。我尝试将包含字符串值的两列首先连接到列表中,然后使用zip,我将列表的每个元素都用’_’连接。我的数据集如下: 我想将这两列连接到第三列,如下所示,分别用于数据框的每一行。 我已经使用下面的代码在python中成功完成了此操作,但该数据框非常大,并且需要花费很长时间才能为整个数据框运行它。我想在PySpark中做同样的事情以提高效率。我已经成功读取了spark数据框
我正在用Java构建一个文件浏览器,并在JTrees中列出文件/文件夹。我现在想做的是,当我到达一个压缩文件夹时,我想列出它的内容,但不首先提取它。 如果有人有想法,请分享。