Класс DoubleSummaryStatistics
- Все реализуемые интерфейсы:
DoubleConsumer
public class DoubleSummaryStatistics extends Object implements DoubleConsumer
Этот класс предназначен для работы с потоками (но не требует их использования). Например, можно вычислить сводную статистику для потока значений типа double следующим образом:
DoubleSummaryStatistics stats = doubleStream.collect(DoubleSummaryStatistics::new,
DoubleSummaryStatistics::accept,
DoubleSummaryStatistics::combine);
DoubleSummaryStatistics можно использовать в качестве целевого объекта для сведения потока. Например:
DoubleSummaryStatistics stats = people.stream()
.collect(Collectors.summarizingDouble(Person::getWeight));
Это вычисляет за один проход количество людей, а также минимальный, максимальный и средний вес и сумму их весов.- Примечание по реализации:
- Эта реализация не является потокобезопасной. Однако безопасно использовать
Collectors.summarizingDouble()для параллельного потока, поскольку параллельная реализацияStream.collect()обеспечивает необходимое разбиение на части, изоляцию и объединение результатов для безопасного и эффективного параллельного выполнения.Эта реализация не проверяет переполнение счетчика.
- Начиная с версии:
- 1.8
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DoubleSummaryStatistics() |
Создает пустой экземпляр с нулевым количеством, нулевой суммой, Double.POSITIVE_INFINITY минимумом, Double.NEGATIVE_INFINITY максимумом и нулевым средним значением. |
DoubleSummaryStatistics |
Создает непустой экземпляр с указанными count, min, max и sum. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
accept |
Добавляет еще одно значение к сводной информации. |
void |
combine |
Объединяет состояние другого DoubleSummaryStatistics с этим объектом. |
final double |
getAverage() |
Возвращает среднее арифметическое записанных значений или ноль, если значения не записывались. |
final long |
getCount() |
Возвращает количество записанных значений. |
final double |
getMax() |
Возвращает максимальное записанное значение, Double.NaN, если какое-либо записанное значение было NaN, или Double.NEGATIVE_INFINITY, если значения не записывались. |
final double |
getMin() |
Возвращает минимальное записанное значение, Double.NaN, если какое-либо записанное значение было NaN, или Double.POSITIVE_INFINITY, если значения не записывались. |
final double |
getSum() |
Возвращает сумму записанных значений или ноль, если значения не записывались. |
String |
toString() |
Возвращает непустое строковое представление этого объекта, пригодное для отладки. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе DoubleConsumer
andThen
Подробное описание конструкторов
DoubleSummaryStatistics
public DoubleSummaryStatistics()
Double.POSITIVE_INFINITY минимумом, Double.NEGATIVE_INFINITY максимумом и нулевым средним значением.DoubleSummaryStatistics
public DoubleSummaryStatistics(long count, double min, double max, double sum) throws IllegalArgumentException
count, min, max и sum. Если count равно нулю, остальные аргументы игнорируются и создается пустой экземпляр.
Если аргументы противоречат друг другу, выбрасывается IllegalArgumentException. Необходимые условия согласованности аргументов:
count >= 0(min <= max && !isNaN(sum)) || (isNaN(min) && isNaN(max) && isNaN(sum))
- Примечание к API:
- Проверка корректности аргументов означает, что полученный набор записанных значений из исходного экземпляра
DoubleSummaryStatisticsможет не быть допустимым набором аргументов для этого конструктора из-за арифметического переполнения счетчика записанных значений исходного экземпляра. Условия согласованности аргументов недостаточны для предотвращения создания внутренне несогласованного экземпляра. Примером такого состояния может быть экземпляр со следующими значениями:count= 2,min= 1,max= 2 иsum= 0. - Параметры:
-
count— количество значений -
min— минимальное значение -
max— максимальное значение -
sum— сумма всех значений - Выбрасывает:
-
IllegalArgumentException— если аргументы противоречат друг другу - Начиная с версии:
- 10
Подробное описание методов
accept
public void accept(double value)
- Определен в:
-
acceptв интерфейсеDoubleConsumer - Параметры:
-
value— входное значение
combine
public void combine(DoubleSummaryStatistics other)
DoubleSummaryStatistics с этим объектом.- Параметры:
-
other— другойDoubleSummaryStatistics - Выбрасывает:
-
NullPointerException— еслиotherравен null
getCount
public final long getCount()
- Возвращает:
- количество значений
getSum
public final double getSum()
Значение суммы с плавающей точкой зависит как от входных значений, так и от порядка операций сложения. Порядок операций сложения в этом методе намеренно не определен, чтобы обеспечить гибкость реализации для повышения скорости и точности вычисленного результата. В частности, этот метод может использовать суммирование с компенсацией или другой метод для уменьшения границы погрешности численной суммы по сравнению с простым суммированием значений double. Из-за неопределенного порядка операций и возможности использования различных схем суммирования результат этого метода для одних и тех же входных значений может различаться.
К вычислению суммы, не являющейся конечной, могут привести различные условия. Это может произойти, даже если все суммируемые записанные значения конечны. Если какое-либо записанное значение не является конечным, сумма также не будет конечной:
- Если какое-либо записанное значение — NaN, итоговая сумма будет NaN.
- Если записанные значения содержат одну или несколько бесконечностей, сумма будет бесконечной или NaN.
- Если записанные значения содержат бесконечности противоположных знаков, сумма будет NaN.
- Если записанные значения содержат бесконечности одного знака, а промежуточная сумма переполняется до бесконечности противоположного знака, сумма может быть NaN.
- Примечание к API:
- Сортировка значений по возрастанию абсолютной величины обычно дает более точные результаты.
- Возвращает:
- сумму значений или ноль, если значений нет
getMin
public final double getMin()
Double.NaN, если какое-либо записанное значение было NaN, или Double.POSITIVE_INFINITY, если значения не записывались. В отличие от операторов численного сравнения, этот метод считает отрицательный ноль строго меньше положительного нуля.- Возвращает:
- минимальное записанное значение,
Double.NaN, если какое-либо записанное значение было NaN, илиDouble.POSITIVE_INFINITY, если значения не записывались
getMax
public final double getMax()
Double.NaN, если какое-либо записанное значение было NaN, или Double.NEGATIVE_INFINITY, если значения не записывались. В отличие от операторов численного сравнения, этот метод считает отрицательный ноль строго меньше положительного нуля.- Возвращает:
- максимальное записанное значение,
Double.NaN, если какое-либо записанное значение было NaN, илиDouble.NEGATIVE_INFINITY, если значения не записывались
getAverage
public final double getAverage()
Вычисленное среднее может различаться численно и иметь те же особенности обработки особых случаев, что и при вычислении суммы; подробности см. в описании getSum().
- Примечание к API:
- Сортировка значений по возрастанию абсолютной величины обычно дает более точные результаты.
- Возвращает:
- среднее арифметическое значений или ноль, если значений нет
toString
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/DoubleSummaryStatistics.html