如何通过流api映射字段



我有一个简单的类:

class Note {
public int id;
public String status;
// some other fields....
}

我想通过流api映射这个类的字段。我有一个简单的方法实现,那就是做我想要的:

public function(int externalId) {
Set<Note> notes = getFromRepository(); // simple method for getting all Note from repository
for (Note note : notes){
note.setId(externalId);
note.setStatus("Open");
}
}

如何使用Stream api?

Map在这里并不合适,因为

  1. setter通常不会返回值(尽管您可以伪造它(,并且
  2. map不是一个终端操作,因此您需要一些不必要的终端操作来触发流

但是在这里使用流没有任何好处。由于getFromRespository返回一个集合,您可以直接使用set接口的forEach方法。

public void function(int externalId) {
getFromRespository().forEach(note->{
note.setID(externalId);
note.setStatus("Open");
});
}

顺便说一句,您现有的实现没有任何问题。正如你所说;"简单";,因此易于理解。

最新更新