gpt4 book ai didi

java - 使用流 Java 8 在 List Java 中进行修改

转载 作者:行者123 更新时间:2023-12-04 08:28:26 24 4
gpt4 key购买 nike

我是 Java 8 的新手。我试图在这里构建学生列表,我想通过从 getStudentNames() 列表中设置学生姓名来返回列表。我想用空格分割这个字符串并循环每个分割的单词,并在下面的 withBadge 中为循环中的每个学生姓名分配每个单词(“orange”、“yellow”、“blue”)。

private static List<Student> buildStudentList(String badge) {
//TODO: i want to stream the list of Splitted Strings here and modify the list below.
return getStudentNames()
.stream()
.map(name -> new Student.Builder()
.withName(name)
.withBadge(badge)
.build()).collect(Collectors.toList());
}
protected static List<StudentNames> getStudentNames() {
return List.of(“sam”, “andrew”, “joseph”);
}
我试过如下:
List<String> splitBadges = Stream.of(badge.split("\\s")).collect(Collectors.toList());
我尝试了上面列表中的每种方法,但它不起作用,因为我已经有一个循环并且想要返回学生列表。它说预期的无效方法并且无法返回我想要的东西。有人可以帮助这里如何循环这个吗?
这是我期望的示例输出:
student: [
{
name: "sam",
badge: "orange"
},
{
name: "andrew",
badge: "orange"
},
{
name: "joseph",
badge: "orange"
},
{
name: "sam",
badge: "yellow"
},
{
name: "andrew",
badge: "yellow"
},
{
name: "joseph",
badge: "yellow"
},
{
name: "sam",
badge: "blue"
},
{
name: "andrew",
badge: "blue"
},
{
name: "joseph",
badge: "blue"
},
]

最佳答案

像这样(导入静态 Collection.toList() ):

        Stream.of(badges.split("\\s"))
.map(badge -> studentNames.stream()
.map(name -> new Student.Builder()
.withName(name)
.withBadge(badge)
.build())
.collect(toList()))
.flatMap(Collection::stream)
.collect(toList());
正如评论中所指出的,这可以大大简化并且是一个更好的版本:
Stream.of(badges.split("\\s"))
.flatMap(badge -> studentNames.stream()
.map(name -> new Student.Builder()
.withName(name)
.withBadge(badge)
.build()))
.collect(toList());

关于java - 使用流 Java 8 在 List Java 中进行修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65139203/

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