当前位置: 首页 > 知识库问答 >
问题:

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

慎建本
2023-03-14

假设我有一个对对象进行转换而不返回任何值的空方法,我想在stream 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。

不管怎样,在上面这样的场景中如何使用空方法?当然,我可以让该方法返回转换后的对象,但这不是重点,并且违反了设计(该方法应该是空的)。

共有3个答案

段干长恨
2023-03-14

如果您确定这是您要做的,请使用peek而不是map

梁修贤
2023-03-14

除了Eugene的答案之外,您还可以使用以下内容:

objList.stream()
   .map(e -> {
      transform(e, e.getUuid()); 
      return e;
   }).collect(Collectors.toList());

实际上,您不想转换当前元素并将其收集到一个新的List中。

相反,您希望为列表中的每个条目应用一种方法。

因此,您应该使用Collection::forEach并返回列表。

List<MyObject> objList = ...;
objList.forEach(e -> transform(e, e.getUuid()));
return objList;
荆修明
2023-03-14

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

List<MyObject> objList = ...
objList.forEach(e -> transform(e, e.getUuid()));
return objList;
 类似资料:
  • 问题内容: 假设我有一个void方法,该方法只对对象进行转换而没有返回任何值,并且我想在流map()函数的上下文中使用它,如下所示: 该示例是为了简单起见而构成的-实际方法除了在处理对象的UUID之外,还在做其他事情。 无论如何,在上述情况下如何使用void方法?当然,我可以使该方法返回转换后的对象,但这不重要,并且违反了设计(该方法应为空)。 问题答案: 似乎是强制使用Java 8流的情况。相反

  • 本文向大家介绍使用Spark进行实时流计算的方法,包括了使用Spark进行实时流计算的方法的使用技巧和注意事项,需要的朋友参考一下 Spark Streaming VS Structured Streaming Spark Streaming是Spark最初的流处理框架,使用了微批的形式来进行流处理。 提供了基于RDDs的Dstream API,每个时间间隔内的数据为一个RDD,源源不断对RDD进

  • 我有一个BigDecimals(在本例中是)的集合,希望将其添加在一起。有没有可能使用流来实现这一点? 我注意到类有几个方法 每一个都有一个方便的方法。但是,正如我们所知,和算术几乎总是一个坏主意。 那么,有没有方便的方法来求和BigDecimals呢? 这是我目前掌握的代码。 为后人编辑后答案: 这两个答案都非常有用。我想补充一点:我的实际场景不涉及原始的集合,它们包装在发票中。但是,我能够修改

  • 我正在尝试使用java类来映射cassandra表以触发rdd,为此我面临一个问题,即cassandra无法创建查询来获取数据。 根据这个链接https://github.com/datastax/spark-cassandra-connector/blob/master/doc/6_advanced_mapper.md,类必须是可序列化的,并且至少对要映射的表的主键列具有“getter”和“se

  • 问题内容: 是否可以使用Java在Android中进行方法转换?我想拦截一个系统方法并记录其参数,然后正常处理 问题答案: 我认为在任何环境下都不能使用Java使用该技术。 也许您可以使用AOP获得类似的结果。 但是,您只能在Android上执行此操作。参见android中面向方面的编程。实际上,由于您不会编译目标代码(系统方法),因此在这种情况下,编译时编织(似乎是您可以在Android上使用的

  • 在流API中映射对象的更好实践是什么? 1-带有方法引用的后续map(): 为什么呢?