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

通过流API按自定义域选择不同对象[重复]

於炯
2023-03-14

我正在尝试将Java循环代码转换为Java8流。我有一个ArrayListRow对象,该对象应将所有DeliveredLengts对象相加,但不包括与另一个具有相同内容的Row对象具有相同内容的Row对象。

Java循环

public int getDeliveredLength() {
    List<Row> distinct = new ArrayList<>();
    for (Row row : rows) {
        if (sameContent(distinct, row)) {
            continue;
        }
        distinct.add(row);
    }
    int sum = 0;
    for (Row row : distinct) {
        sum += row.getDeliveredLength();
    }
    return sum;
}

private boolean sameContent(List<Row> list, Row other) {
    for (Row row : list) {
        if (other.sameContent(row)) {
            return true;
        }
    }
    return false;
}

Java8流代码是什么?

public int getDeliveredLength() {
  return rows.stream().filter(??).map(??).mapToInt(Row::getDeliveredLength).sum()
}

共有1个答案

南门嘉
2023-03-14

为什么要编写一个新方法sameContent,而不重写equals方法?使用equals的优点是标准库中的许多类和方法调用它来比较类的实例。

如果您使用equals,则可以使用标准的stream.distince()方法,该方法返回不同值的流。因此您的Java8流表达式变成:

rows.stream().distinct().mapToInt(Row::getDeliveredLength).sum()
 类似资料:
  • 我想从选择一个菜单中选择一个自定义对象。它既不显示错误也不显示值。我该怎么办? 我的xhtml文档: 我的管理Bean类:

  • 我不知道以前有没有人问过这个问题。我要给我爸爸建一个计算器。他问我有没有办法用按钮定制。 我还没有完成任何代码。我打算尝试一些东西。我的研究结果一无所获。 这就是我想要实现的,我感觉它打破了android studio的编码法则。这就是概念: 想象一下计算器。数字上方有8个空白按钮。这些按钮通常具有百分比和sqrt等功能。,。。等 有人问我,他是否可以按住按钮,随意改变这些功能。 所以现在的问题是

  • 我想从“选择一个”菜单中选择自定义对象。它既不显示错误也不显示值。怎么办?请帮帮我。提前谢谢。 现在我在getAsObject的这一行看到空指针异常: 这是我的xhtml文档 这是我的管理豆类。 这是我的currencyConverter类代码:

  • 我试图用Vuejs 2实现自定义选择组件。如文档中所述,我不应该直接修改值属性,并建议使用事件将选定的数据传递给父组件。当选项值是一个对象时,我遇到了问题,却得到了[Object object]。 这是我的选择组件模板: 这是脚本部分: 这是父组件 选项: 我期待 但得到了[Object object] 我错过了什么吗?

  • 我对dataTable multiple selection with复选框有问题(如第二个复选框:http://primefaces.org/showcase/ui/datatableRowSelectionRadioCheckbox.jsf). 当我尝试在backingBean中执行一个方法时,所选的项总是具有正确的大小,但具有相同的对象。示例:我在数据表中选择三条消息:消息1、消息2和消息3