Java8-收集时的流值更新
在前面的问题中,我们如何在Java8-收集时的流值更新,java,java-8,java-stream,Java,Java 8,Java Stream,在前面的问题中,我们如何在collect()流程stream().map()之后在collect()中收集时更新值 String designation = "Engineer"; String preFix = "PRE_FIX"; List<String> names = new ArrayList<>(); names.add("ABC"); names.add("DEF"); names.add("GHI"); System.out.println( na
collect()
流程stream().map()
之后在collect()中收集时更新值
String designation = "Engineer";
String preFix = "PRE_FIX";
List<String> names = new ArrayList<>();
names.add("ABC");
names.add("DEF");
names.add("GHI");
System.out.println(
names.stream()
.map(name ->
MyClass.createReport(name, designation))
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll));
输出:
[Name:ABC - Designation:Engineer, Name:DEF - Designation:Engineer,
Name:GHI - Designation:Engineer]
预期:
[PRE_FIX->Name:ABC - Designation:Engineer, PRE_FIX->Name:DEF -
Designation:Engineer, PRE_FIX->Name:GHI - Designation:Engineer]
使用另一个map()
只需在调用之前将前缀添加到createReport
:
names.stream()
.map(name -> preFix + "->" + MyClass.createReport(name, designation))
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
另一方面,.collect(ArrayList::new,ArrayList::add,ArrayList::addAll)
可以简化为.collect(toCollection(ArrayList::new))代码>:
…map(name->preFix+“->”+MyClass.createReport(name,designation))…
您在软件中提出的问题。你已经给出了答案。。。这是什么。
System.out.println(
names.stream()
.map(name -> FolderDiffGenerator.createReport(name,
designation))**
.map(result -> preFix + "->" +result)**
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll));
names.stream()
.map(name -> preFix + "->" + MyClass.createReport(name, designation))
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
names.stream()
.map(name -> preFix + "->" + MyClass.createReport(name, designation))
.collect(toCollection(ArrayList::new));