【发布时间】:2018-10-28 17:29:06
【问题描述】:
我对使用 Java 还是很陌生,并试图使用 map 来扁平化集合中的集合以尝试获取单个列表。但是我似乎无法让这个工作。为了重现这一点,我创建了一个非常简单的示例来说明我正在尝试做的事情。这是我到目前为止所拥有的:
A 类
import java.util.List;
public class ClassA {
private List<ClassB> listOfClassB;
public ClassA(List<ClassB> listOfClassB) {
this.listOfClassB = listOfClassB;
}
public List<ClassB> getListOfClassB() {
return this.listOfClassB;
}
}
B 类
public class ClassB {
private String item;
public ClassB(String item) {
this.item = item;
}
public String getItem() {
return item;
}
}
主要
public class Main {
public static void main(String[] args) {
ClassB firstClass = new ClassB("A");
ClassB secondClass = new ClassB("B");
ClassB thirdClass = new ClassB("C");
ClassB fourthClass = new ClassB("D");
ArrayList<ClassB> firstClassList = new ArrayList<>();
ArrayList<ClassB> secondClassList = new ArrayList<>();
firstClassList.add(firstClass);
firstClassList.add(secondClass);
secondClassList.add(thirdClass);
secondClassList.add(fourthClass);
ArrayList<ClassA> classes = new ArrayList<>();
classes.add(new ClassA(firstClassList));
classes.add(new ClassA(secondClassList));
List<List<String>> collect = classes.stream().map(c -> c.getListOfClassB().stream().map(ClassB::getItem).collect(Collectors.toList())).collect(Collectors.toList());
}
}
正如您在底部看到的那样,我可以得到List<List<String>>,但我希望得到的是ClassB 中的List<String>。我已尝试为此使用平面地图,但无法使其正常工作,正在寻找一些指导。
提前致谢。
【问题讨论】:
标签: java list lambda java-8 java-stream