gpt4 book ai didi

java - 如何在 java-8 中进行多个链式操作?

转载 作者:行者123 更新时间:2023-12-02 08:41:14 26 4
gpt4 key购买 nike

我有一个用例如下。

  1. List<Document>来自蒙戈
  2. 对于每个 Document

    1. 获取字段

    2. 添加到集合

    3. 更改字段

    4. 对照其他两组检查更改的字段

      1. 如果不存在,则转换为 pojo

      2. 将 pojo 添加到列表

我有如下内容。

Optional.ofNullable(documentList).orElseGet(Collections::emptyList).forEach(doc -> {
// I am doing all the operations in java7 way
})

我的想法与下面类似。

  1. 迭代文档列表 - 将字段添加到集合中
  2. 从第 1 步迭代该集合 - 检查 field不包含在其他两个集合中 - 然后从原始文档形成 pojo - 将 pojo 添加到列表

但是这里我需要迭代两次。此外,我还需要维护我的原始文档。如果我的列表很大,则不必要地增加迭代时间。

我怎样才能以标准方式做到这一点?

documentList.forEach(doc -> {
String deviceId = doc.getString("deviceId");
deviceSet.add(deviceId);
String alteredId = "IMEI" + deviceId;
if(!clearedDevices.contains(alteredId) && !superSetDevices.contains(deviceId)) {
//Pojo from Document
//add pojo to a list
}
})

最佳答案

这取决于相关字段的类型。如果是可变对象,那么 Java 8 流就完美了。像这样的东西:

documentList.stream()
.map(d->d.getString("deviceId") // stream of Stringified field
.peek(deviceSet::add) // add field to set
.map("IMEI"::concat) // alter the field
.filter(mf->!clearedDevices.contains(mf)&&!superSetDevices.contains(mf)) // filter...
.map(f->XXX.convert2Pojo(f)) // convert to pojo
.forEach(pojoList::add) // add to pojolist, or collect?

关于java - 如何在 java-8 中进行多个链式操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61381442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com