我正在使用Java流统计信息,通过这种方式来提高速度:
IntSummaryStatistics intSummary = join.stream(). MapToInt (t> t.get0(). GetCNationkey ()). SummaryStatistics();
Long sumResult = intSummary.getSum ();
我想要一个新的类来构造一个新的getSum()
方法。像这样:
IntSummaryStatisticsTest intSummarytest = join.stream (). MapToInt (t> t.get0 (). GetCNationkey ()). SummaryStatistics ();
Long sumResult = intSummarytest.getSumTest();
我试图创建一个新类:
public class IntSummaryStatisticsTest extends IntSummaryStatistics {}
IntSummaryStatisticsTest summa = join.stream().mapToInt(t->t.get0().getCNationkey()).summaryStatistics();
但是我遇到了这个错误:incompatible types required java. Required: IntSummaryStatisticsTest Found: java.util.IntSummaryStatistics
。
是否可以实现这种新的getSumTest()
方法?
答案 0 :(得分:2)
就像我在评论中指出的那样,我会选择继承而不是继承。这意味着您可以创建类IntSummaryStatisticsTest
,并在构造函数中接受IntSummaryStatistics
对象作为参数。您的课程如下所示:
class IntSummaryStatisticsTest {
private final IntSummaryStatistics statistics;
public IntSummaryStatisticsTest(IntSummaryStatistics statistics) {
this.statistics = statistics;
}
public long getSumTest() {
// return your value
}
}
该类的用法如下:
var summary = new IntSummaryStatisticsTest(join.stream()
.mapToInt(t -> t.get0().getCNationkey())
.summaryStatistics());
System.out.println(summary.getSumTest());
答案 1 :(得分:1)
documentation of IntStream
给出了一个提示:
...例如,您可以使用以下方法在整数流上计算摘要统计信息:
IntSummaryStatistics stats = intStream.collect( IntSummaryStatistics::new, IntSummaryStatistics::accept, IntSummaryStatistics::combine);
您应该可以对IntSummaryStatisticsTest
执行相同的操作,即:
IntSummaryStatisticsTest stats = intStream.collect(
IntSummaryStatisticsTest::new,
IntSummaryStatisticsTest::accept,
IntSummaryStatisticsTest::combine);
还要考虑Jacob的评论/解决方案(使用组合可能会更好)