我有这样的想法:
Integer totalIncome = carDealer.getBrands().stream().mapToInt(brand -> brand.getManufacturer().getIncome()).sum();
Integer totalOutcome = carDealer.getBrands().stream().mapToInt(brand -> brand.getManufacturer().getOutcome()).sum();
我怎么能把它写在一个流中呢?收集f.e.对
编辑:
谢谢你们的评论、回答和参与。我会对使用流解决这个问题的不同方法提出问题。你对此有什么看法:
final IncomeAndOutcome incomeAndOutcome = carDealer.getBrands()
.stream()
.map(Brand::getManufacturer)
.map(IncomeAndOutcome::of)
.reduce(IncomeAndOutcome.ZERO, IncomeAndOutcome::sum);
static class IncomeAndOutcome {
private static final IncomeAndOutcome ZERO = of(0, 0);
@Getter
private final int income;
@Getter
private final int outcome;
public static IncomeAndOutcome of(final int income, final int outcome) {
return new IncomeAndOutcome(income, outcome);
}
public static IncomeAndOutcome of(final Manufacturer manufacturer) {
return new IncomeAndOutcome(manufacturer.getIncome(), manufacturer.getOutcome());
}
IncomeAndOutcome(final int income, final int outcome) {
this.income = income;
this.outcome = outcome;
}
IncomeAndOutcome sum(final IncomeAndOutcome incomeAndOutcome) {
return of(this.income + incomeAndOutcome.getIncome(), this.outcome + incomeAndOutcome.getOutcome());
}
}
没有正确的测量——一切都是猜测。我唯一同意的论点是可读性——这里几乎没有这种情况;但是如果你出于学术目的想知道这个,你可以这样做:
int[] result = carDealer.getBrands()
.stream()
.map(brand -> new int[]{brand.getManufacturer().getIncome(),
brand.getManufacturer().getOutcome()})
.collect(Collector.of(
() -> new int[2],
(left, right) -> {
left[0] += right[0];
left[1] += right[1];
},
(left, right) -> {
left[0] += right[0];
left[1] += right[1];
return left;
}));
我想创建对象MyObject的实例,其中的每个字段都是该字段值的总和 我创建一个对象 然后我构建对象列表: 我想要创建对象() 很容易对每个流求和一个字段: 或 然后构造对象
我正在尝试对List的字段求和并返回值。我想为此使用流,但我对流不熟悉,不确定流是否可以完成此操作。这是我尝试过的,但我认为语法不正确。 上下文的相关类结构。 获取总价和单价方法
假设我有一个实现下面接口的对象列表: 假设我也有一个类,它能够对这些对象进行求和: 我在玩一个自定义收集器,但无法找到一些整洁的解决方案。
我有这样的代码: 有什么想法吗?
让我们假设有一个福克斯类,它有名字、颜色和年龄。假设我有一份狐狸的名单,我想打印出那些狐狸的名字,它们的颜色是绿色的。我想使用流来这样做。 字段: 名称:私有字符串 颜色:专用字符串 年龄:私有整数 我写了以下代码来做过滤和Sysout: 但是,我的代码中存在一些语法问题。 到底是什么问题?我该怎么整理?
如何以另一种方式从流中添加两个不同列表中的对象? 这里有一个例子