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

如何将forEach转换为lambda

孙嘉悦
2023-03-14
Iterator<Rate> rateIt = rates.iterator();
int lastRateOBP = 0;
while (rateIt.hasNext())
{
    Rate rate = rateIt.next();
    int currentOBP = rate.getPersonCount();
    if (currentOBP == lastRateOBP)
    {
        rateIt.remove();
        continue;
    }

    lastRateOBP = currentOBP;
}

如何使用Java8的stream将上面的代码转换为lambda?例如list.stream().filter()....但我需要操作list。

共有1个答案

杨研
2023-03-14

如果你真的像你在评论中说的那样想要清晰和排序,那就这么简单:

TreeSet<Rate> sorted = rates.stream()
                  .collect(Collectors.toCollection(() -> 
                   new TreeSet<>(Comparator.comparing(Rate::getPersonCount))));

但是请注意,在使用迭代器的示例中,您没有删除重复项,而是只删除连续的重复项(我在对您的问题的注释中举例说明了这一点)。

编辑

 Collection<Rate> sorted = rates.stream()
            .collect(Collectors.toMap(Rate::getPersonCount,
                    Function.identity(),
                    (left, right) -> {
                        return left.getLos() > right.getLos() ? left : right;
                    },
                    TreeMap::new))
            .values();

    System.out.println(sorted);
 TreeSet<Rate> sorted = rates.stream()
            .collect(Collectors.collectingAndThen(

                    Collectors.toMap(Rate::getPersonCount,
                            Function.identity(),
                            (left, right) -> {
                                return left.getLos() > right.getLos() ? left : right;
                            },
                            TreeMap::new),
                    map -> {
                        TreeSet<Rate> set = new TreeSet<>(Comparator.comparing(Rate::getPersonCount));
                        set.addAll(map.values());
                        return set;
                    }));
 类似资料:
  • 将循环转换为时遇到问题。 方法返回 我尝试过,但需要等待将转换为并且我无法添加它。 我正在尝试下载大约15个报告异步,以等待所有的已经下载,然后将它们合并成一个PDF。 注意:我使用的是框架4.8.3

  • 我想转换 对此: 不幸的是,我 我该怎么修理呢?

  • 问题内容: 我在mySQL 5.1中有一个数据类型的日期列。如何将其转换为DATE? 这是我到目前为止所拥有的- 得到这个 错误-#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’FROM 7 FOR 4附近使用) 请帮忙。 问题答案: 您可以使用MySQL的功能 尽管我怀疑您使用Unix时间戳会更轻松

  • 问题内容: 有没有一种简单的方法可以避免处理文本编码问题? 问题答案: 您确实无法避免处理文本编码问题,但是Apache Commons中已有一些解决方案: 至: 至: 您只需要选择所需的编码即可。

  • 问题内容: 如何使用Java将Dicom文件(.dcm)转换为jpeg图像?这是我的代码: 我在运行项目时遇到以下错误 请帮助并提前感谢 问题答案: 这是使用dcm4che 2将DICOM转换为JPEG的链接 以下是我的代码,效果很好,我将其与导入一起放置,因此可能用完了。 用于运行它的罐子 dcm4che-imageio-2.0.28.jar dcm4che-image-2.0.28.jar j

  • 问题内容: 我正在使用A 将Json从Web转换为字符串。 这可能很简单,但是我似乎无法将此字符串转换为。 我怎样才能做到这一点? 问题答案: 请参阅文档和示例。