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