JDK 1.8 lambda 各函数用法
持续学习中。。。
flatMap (双层集合转单集合)
main 方法
public static void main(String[] args) {
List<Demo> list = new ArrayList<>();
for (int i = 0; i < 4; i++) {
Demo demo = new Demo();
demo.setName("demo:" + i);
List<Son> sonList = new ArrayList<>();
for (int j = 0; j < 5; j++) {
Son son = new Son();
son.setSonName("son:" + j);
sonList.add(son);
}
demo.setList(sonList);
list.add(demo);
}
System.out.println("原list:" + JSONObject.toJSONString(list));
List<Test> tests = list.stream().flatMap(demo -> demo.getList().stream().map(son -> {
Test test = new Test();
test.setDemoName(demo.getName());
test.setSonName(son.getSonName());
return test;
})).collect(toList());
System.out.println("转后list:" + JSONObject.toJSONString(tests));
}
实体
@Data
class Test {
private String demoName;
private String sonName;
}
@Data
class Demo {
private String name;
private List<Son> list;
}
@Data
class Son {
private String sonName;
}
结果打印
原list:[{"list":[{"sonName":"son:0"},{"sonName":"son:1"},{"sonName":"son:2"},{"sonName":"son:3"},{"sonName":"son:4"}],"name":"demo:0"},{"list":[{"sonName":"son:0"},{"sonName":"son:1"},{"sonName":"son:2"},{"sonName":"son:3"},{"sonName":"son:4"}],"name":"demo:1"},{"list":[{"sonName":"son:0"},{"sonName":"son:1"},{"sonName":"son:2"},{"sonName":"son:3"},{"sonName":"son:4"}],"name":"demo:2"},{"list":[{"sonName":"son:0"},{"sonName":"son:1"},{"sonName":"son:2"},{"sonName":"son:3"},{"sonName":"son:4"}],"name":"demo:3"}]
转后list:[{"demoName":"demo:0","sonName":"son:0"},{"demoName":"demo:0","sonName":"son:1"},{"demoName":"demo:0","sonName":"son:2"},{"demoName":"demo:0","sonName":"son:3"},{"demoName":"demo:0","sonName":"son:4"},{"demoName":"demo:1","sonName":"son:0"},{"demoName":"demo:1","sonName":"son:1"},{"demoName":"demo:1","sonName":"son:2"},{"demoName":"demo:1","sonName":"son:3"},{"demoName":"demo:1","sonName":"son:4"},{"demoName":"demo:2","sonName":"son:0"},{"demoName":"demo:2","sonName":"son:1"},{"demoName":"demo:2","sonName":"son:2"},{"demoName":"demo:2","sonName":"son:3"},{"demoName":"demo:2","sonName":"son:4"},{"demoName":"demo:3","sonName":"son:0"},{"demoName":"demo:3","sonName":"son:1"},{"demoName":"demo:3","sonName":"son:2"},{"demoName":"demo:3","sonName":"son:3"},{"demoName":"demo:3","sonName":"son:4"}]