【问题标题】:How to map fields by stream api如何通过流 api 映射字段
【发布时间】:2021-12-02 15:40:43
【问题描述】:

我有一个简单的课程:

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 做到这一点?

【问题讨论】:

    标签: java stream


    【解决方案1】:

    地图在这里并不合适,因为

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

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

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

    顺便说一句,您现有的实现没有任何问题。正如您所说,它“简单”,因此很容易理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-03
      • 2018-01-29
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多