Java use void method for stream mapping?

Nestor Milyaev :

Let's say I have a void method that just does transformation on an object, without returning any value, and I want to use it in a context of a stream map() function, like this:

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);
}

The example is made up for simplicity - the actual method is doing something else than just mucking up the UUID of an object.

Anyway, how is that possible to use a void method in a scenario like the above? Surely, I could make the method return the transformed object, but that's besides the point and is violating the design (the method should be void).

Murat Karagöz :

Seems like this is a case of forced usage of java 8 stream. Instead you can achieve it with forEach.

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

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=455274&siteId=1