【问题标题】:Creating objects with parameters in Java 8 Stream在 Java 8 Stream 中创建带参数的对象
【发布时间】:2017-05-14 13:14:22
【问题描述】:
是否可以在使用 Stream 类时创建带参数的对象?我想用 Java 8 Stream 重现以下内容。
for(Integer id:someCollectionContainingTheIntegers){
someClass.getList().add(new Whatever(param1, id));
}
【问题讨论】:
标签:
java
collections
parameters
java-8
java-stream
【解决方案1】:
当然。但如果你有一个集合,你可以使用forEach 和一个 lambda:
someCollectionContainingTheIntegers.forEach(id -> someClass.getList().add(new Whatever(param1, id));
另一个可能的变化是收集到目标列表中:
someCollectionContainingTheIntegers.stream()
.map(id -> new Whatever(param1, id))
.collect(Collectors.toCollection(() -> someClass.getList()));
【解决方案2】:
还有一个解决方案...
List<Whatever> collect = someCollectionContainingTheIntegers.stream()
.map(id -> new Whatever(param1, id))
.collect(toList());
someClass.getList().addAll(collect);
【解决方案3】:
在列表中做一个 foreach
List<Integer> ml = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
List<Integer> ml2 = Arrays.asList(21, 22, 23, 24);
ml2.forEach(x -> ml.add(x));
System.out.println(ml);