summarizingInt 和 Collectors.summarizingInt 之间的区别?
Difference between summarizingInt and Collectors.summarizingInt?
我正在使用 IntSummaryStatistics class 来计算我的 class 的统计数据。
我搜索了三种计算统计数据的特定方法。这是我的代码:
IntSummaryStatistics stats1 = orderEntries.stream()
.mapToInt((x) -> x.getAmount()).summaryStatistics();
IntSummaryStatistics stats2 = orderEntries.stream().collect(
Collectors.summarizingInt(o -> o.getAmount()));
IntSummaryStatistics istats2 = orderEntries.stream().
collect(
() -> new IntSummaryStatistics(),
(i,o) -> i.accept(o.getAmount()),
(i1, i2) -> i1.combine(i2));
IntSummaryStatistics istats = IntStream.of(51,22,50,27,35).
collect(IntSummaryStatistics::new, IntSummaryStatistics::accept,
IntSummaryStatistics::combine);
哪种方法更好?我们应该更喜欢哪一个?
我会选择:
IntSummaryStatistics stats = orderEntries
.stream()
.collect(Collectors.summarizingInt(OrderEntry::getAmount));
这个选项:
IntSummaryStatistics istats = IntStream.of(51,22,50,27,35).
collect(IntSummaryStatistics::new, IntSummaryStatistics::accept,
IntSummaryStatistics::combine);
是最糟糕的,这正是 IntStream.summaryStatistics
所做的,只是明确地写出来了。所以第一个选项没有优势。
我会选择稍作修改的第二个选项,因为从我的角度来看,收集器更能代表业务运营"summarization of order entry amounts"。
我正在使用 IntSummaryStatistics class 来计算我的 class 的统计数据。 我搜索了三种计算统计数据的特定方法。这是我的代码:
IntSummaryStatistics stats1 = orderEntries.stream()
.mapToInt((x) -> x.getAmount()).summaryStatistics();
IntSummaryStatistics stats2 = orderEntries.stream().collect(
Collectors.summarizingInt(o -> o.getAmount()));
IntSummaryStatistics istats2 = orderEntries.stream().
collect(
() -> new IntSummaryStatistics(),
(i,o) -> i.accept(o.getAmount()),
(i1, i2) -> i1.combine(i2));
IntSummaryStatistics istats = IntStream.of(51,22,50,27,35).
collect(IntSummaryStatistics::new, IntSummaryStatistics::accept,
IntSummaryStatistics::combine);
哪种方法更好?我们应该更喜欢哪一个?
我会选择:
IntSummaryStatistics stats = orderEntries
.stream()
.collect(Collectors.summarizingInt(OrderEntry::getAmount));
这个选项:
IntSummaryStatistics istats = IntStream.of(51,22,50,27,35).
collect(IntSummaryStatistics::new, IntSummaryStatistics::accept,
IntSummaryStatistics::combine);
是最糟糕的,这正是 IntStream.summaryStatistics
所做的,只是明确地写出来了。所以第一个选项没有优势。
我会选择稍作修改的第二个选项,因为从我的角度来看,收集器更能代表业务运营"summarization of order entry amounts"。