Spec-Zone.ru › OpenJDK 27

Класс DoubleSummaryStatistics

java.lang.Object
java.util.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(long count, double min, double max, double sum)
Создает непустой экземпляр с указанными count, min, max и sum.

Краткое описание методов

Модификатор и тип Метод Описание
void accept(double value)
Добавляет еще одно значение к сводной информации.
void combine(DoubleSummaryStatistics other)
Объединяет состояние другого объекта 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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии.
Финализация устарела и подлежит удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо пока не истечет заданный интервал реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо пока не истечет заданный интервал реального времени.

Методы, объявленные в интерфейсе DoubleConsumer

andThen
Модификатор и тип Метод Описание
default DoubleConsumer andThen(DoubleConsumer after)
Возвращает составной объект DoubleConsumer, который последовательно выполняет эту операцию, а затем операцию after.

Подробное описание конструкторов

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.
Промежуточные суммы конечных значений могут переполниться и стать бесконечностями с противоположными знаками; в таком случае итоговая сумма будет 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

public String toString()
Возвращает непустое строковое представление этого объекта, подходящее для отладки. Точный формат представления не определен и может различаться в разных реализациях и версиях.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление объекта

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API