Java IntSummaryStatistics的summaryStatistics方法
为什么空IntStream上的summaryStatistics方法返回整数的最大值和最小值作为流中存在的最大值和最小值Java IntSummaryStatistics的summaryStatistics方法,java,java-8,functional-programming,java-stream,Java,Java 8,Functional Programming,Java Stream,为什么空IntStream上的summaryStatistics方法返回整数的最大值和最小值作为流中存在的最大值和最小值 IntStream intStream = IntStream.of(); IntSummaryStatistics stat = intStream.summaryStatistics(); System.out.println(stat); 输出: 返回这些值有什么意义? 难道不应该考虑错误的结果吗? 此行为记录在Javadoc中,因此根据定义,这是正确的行为: i
IntStream intStream = IntStream.of();
IntSummaryStatistics stat = intStream.summaryStatistics();
System.out.println(stat);
输出:
返回这些值有什么意义?
难道不应该考虑错误的结果吗?
此行为记录在Javadoc中,因此根据定义,这是正确的行为: int java.util.IntSummaryStatistics.getMin 返回记录的最小值,如果未记录任何值,则返回Integer.MAX_值 返回: 最小值,如果没有,则为Integer.MAX\u值 及 int java.util.IntSummaryStatistics.getMax 返回记录的最大值,如果未记录任何值,则返回Integer.MIN_值 返回: 最大值,如果没有,则为Integer.MIN_值 至于返回这些值有什么意义,我们可以说,空流的最小值应该是这样的:如果流有任何元素,那么该元素将小于该值
类似地,我们可以认为,空流的最大值应该是,如果流有任何元素,那么该元素将大于该值。此行为记录在Javadoc中,因此根据定义,这是正确的行为: int java.util.IntSummaryStatistics.getMin 返回记录的最小值,如果未记录任何值,则返回Integer.MAX_值 返回: 最小值,如果没有,则为Integer.MAX\u值 及 int java.util.IntSummaryStatistics.getMax 返回记录的最大值,如果未记录任何值,则返回Integer.MIN_值 返回: 最大值,如果没有,则为Integer.MIN_值 至于返回这些值有什么意义,我们可以说,空流的最小值应该是这样的:如果流有任何元素,那么该元素将小于该值
类似地,我们可以认为,空流的最大值应该是这样的:如果流有任何元素,那么该元素将大于该值。由于列表是空的,并且这些方法返回的是实际值而不是可选值,因此它假定为完整的整数范围。否则它将返回一个空的可选值。因为列表为空,并且这些方法返回的是实际值而不是可选值,所以它假定为完整的整数范围。否则,它将返回一个空的可选值。请参见和文档,在没有记录任何值的情况下,这里描述了这种确切的行为 这是明智的返回这些角落的情况。 我将在SummaryStatistics.getMin中解释这种行为 示例:让我们假设列表至少包含一个条目。无论该条目的整数值是什么,它都不会大于integer.MAX\u值。因此,在没有条目的情况下返回此值是有意义的,以便为用户提供洞察力 IntSummaryStatistics也是如此。getMax请参见和文档,这里描述了在没有记录任何值时的确切行为 这是明智的返回这些角落的情况。 我将在SummaryStatistics.getMin中解释这种行为 示例:让我们假设列表至少包含一个条目。无论该条目的整数值是什么,它都不会大于integer.MAX\u值。因此,在没有条目的情况下返回此值是有意义的,以便为用户提供洞察力 IntSummaryStatistics.getMax也是如此,它可以在任何数组中查找最小的int值,通常将默认值初始化为Integer.MAX\u值 因此,如果没有要迭代的内容,那么将返回缺省min的值。对于 max,默认的max被初始化为Integer.MIN\u值。要在任何数组中查找最小int值,通常将默认值初始化为Integer.max\u值 因此,如果没有要迭代的内容,那么将返回缺省min的值。对于
最大值,默认最大值初始化为整数。最小值。空集的最小值是多少?我想说,在这种情况下,没有任何值是正确的。这有什么错?这就是他们决定表示未知值的方式不要忘记,由IntSummaryStatistics扩展的IntStream和IntConsumer处理原语int,并且如果以某种方式从getMin返回一个可选值,这将与API为专门化设计的原因相矛盾。另一方面,有一种解决方法,您可以根据您可能希望实现为围绕整数值的自定义逻辑的条件创建自己的IntegerSummaryStatistics。但明智地决定是否值得。空集的最小值是多少?我想说,在这种情况下,没有任何值是正确的。这有什么错?这就是他们决定表示未知值的方式不要忘记IntStream 由IntSummaryStatistics扩展的IntConsumer处理原语int,如果以某种方式从getMin返回一个可选值,那么它将与API专门设计的原因相矛盾。另一方面,有一种解决方法,您可以根据您可能希望实现为围绕整数值的自定义逻辑的条件创建自己的IntegerSummaryStatistics。但如果值得的话,明智地做出决定。
IntSummaryStatistics{count=0, sum=0, min=2147483647, average=0.000000, max=-2147483648}
int min = Integer.MAX_VALUE;
for (int i : somearray) {
if (i < min) {
min = i;
}
}
return min;