gpt4 book ai didi

java - 如何使用 java lambda 表达式通过迭代两种不同类型的列表来创建列表?

转载 作者:行者123 更新时间:2023-11-30 07:56:02 25 4
gpt4 key购买 nike

如何使用 Java 8 lambda 表达式更改以下代码。下面是我的代码:

public class Main {
class Student {
String name;
int mark;
String parentName;

public String getName() {
return name;
}
public int getMark() {
return mark;
}
public String getParentName() {
return parentName;
}
}

class Empl {
String name;
long salary;
String managerName;

public String getName() {
return name;
}
public long getSalary() {
return salary;
}
public String getManagerName() {
return managerName;
}
}

public static void main(String[] args) {
List<Student> list1 = new ArrayList<>();
List<Empl> list2 = new ArrayList<>();
// Storing data to list1 and list2
List<String> result = new ArrayList<>();
for(Student s :list1) {
result.add(s.getName());
result.add(s.getParentName());
}
for(Empl m :list2) {
result.add(m.getName());
result.add(m.getManagerName());
}
System.out.println(result);
}
}

在上面的代码中,我使用了 for 循环来添加来自两个不同列表的元素。我如何使用 lamba 表达式执行上述相同的步骤?

最佳答案

下面的代码做同样的事情:

List<String> result = Stream.concat(
list1.stream().flatMap(s -> Stream.of(s.getName(), s.getParentName())),
list2.stream().flatMap(m -> Stream.of(m.getName(), m.getManagerName()))
)
.collect(Collectors.toList());

如果您需要确保创建了一个 ArrayList,只需使用 Collectors.toCollection(ArrayList::new) 即可。

关于java - 如何使用 java lambda 表达式通过迭代两种不同类型的列表来创建列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42649942/

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