Java 使用 void 方法进行流映射?

标签 java java-8 java-stream

假设我有一个 void 方法,它只对对象进行转换,不返回任何值,我想在流 map() 函数的上下文中使用它,如下所示:

public List<MyObject> getList(){
    List<MyObject> objList = ...
    return objList.stream().map(e -> transform(e, e.getUuid())).collect(Collectors.toList());
}

private void transform(MyObject obj, String value){
    obj.setUuid("prefix" + value);
}

该示例是为简单起见而编造的 - 实际方法正在执行其他操作,而不仅仅是混淆对象的 UUID。

无论如何,在上述情况下怎么可能使用 void 方法? 当然,我可以让该方法返回转换后的对象,但这不是重点并且违反了设计(该方法应该是无效的)。

最佳答案

这似乎是强制使用 java 8 流的情况。相反,您可以使用 forEach 实现它。

List<MyObject> objList = ...
objList.forEach(e -> transform(e, e.getUuid()));
return objList;

关于Java 使用 void 方法进行流映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41719914/

相关文章:

java - Gradle任务执行顺序

java - 在使用流时创建一个排序集

java - 收集器的组合器功能可以用于顺序流吗?

java - 为什么@JoinColumn在父端但生成的列在子端?

java - 如何在 orm.xml 中使用 SpEL?

java - 当我有两个同名方法时,如何在 JAVA 中指定 lambda 表达式?

Java 8 按具有不同分隔符的第一个字符串属性进行分组

java - 用lambda表达式java实现计数变量

Java 8 : change type of entries return Map

java - 对数组进行排序并保留原始索引