Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Recuperando Métricas Resumidas de Stream com o Método summaryStatistics() | Operações Terminais na Stream API
Stream API

bookRecuperando Métricas Resumidas de Stream com o Método summaryStatistics()

Ao processar dados, muitas vezes é necessário calcular métricas estatísticas como soma, média, mínimo, máximo e contagem de elementos.

Você já aprendeu como encontrar os valores mínimo e máximo em um stream, mas existe um método que reúne todas essas estatísticas de uma só vez. A Java Stream API oferece um método dedicado chamado summaryStatistics(), que simplifica a obtenção de estatísticas gerais de streams numéricos.

Método summaryStatistics()

A Stream API também fornece streams numéricos especializados: IntStream, LongStream e DoubleStream. Eles funcionam como streams regulares, mas são otimizados para tipos primitivos específicos.

Cada um desses streams numéricos inclui o método summaryStatistics(), que retorna uma instância de IntSummaryStatistics, LongSummaryStatistics ou DoubleSummaryStatistics, respectivamente. Esses objetos contêm as principais métricas estatísticas, como contagem, soma, mínimo, máximo e média.

IntSummaryStatistics summaryStatistics();
LongSummaryStatistics summaryStatistics();
DoubleSummaryStatistics summaryStatistics();

Ao chamar summaryStatistics() em um stream numérico, é possível coletar e analisar rapidamente dados estatísticos sobre seus valores.

Métodos Principais

Em Java, as classes IntSummaryStatistics, LongSummaryStatistics e DoubleSummaryStatistics são utilizadas para coletar estatísticas sobre dados numéricos. Elas fornecem um conjunto de métodos para extrair métricas estatísticas principais.

Exemplo Prático

Em uma loja online, é necessário analisar os preços dos produtos para determinar o preço mínimo e o preço máximo, o preço médio e o número total de itens.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.List; import java.util.IntSummaryStatistics; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3500, 1200, 4000, 2500); IntSummaryStatistics stats = prices.stream() .collect(Collectors.summarizingInt(Integer::intValue)); System.out.println("Minimum price: " + stats.getMin()); System.out.println("Maximum price: " + stats.getMax()); System.out.println("Average price: " + stats.getAverage()); System.out.println("Total number of items: " + stats.getCount()); System.out.println("Total sum: " + stats.getSum()); } }

Neste código, é criada uma lista de preços de produtos e convertida em um stream numérico. O método Collectors.summarizingInt(Integer::intValue) coleta dados estatísticos e os armazena em um objeto IntSummaryStatistics. Em seguida, são utilizados os métodos getMin(), getMax(), getAverage(), getCount() e getSum() para extrair os valores necessários.

Métodos Adicionais

O método combine() mescla dois objetos de estatísticas. Isso é útil ao processar dados em múltiplas threads ou ao consolidar estatísticas de diferentes fontes.

O método accept() adiciona manualmente valores a um objeto de estatísticas, sendo útil para atualizar dados dinamicamente.

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; import java.util.IntSummaryStatistics; public class Main { public static void main(String[] args) { IntSummaryStatistics stats1 = new IntSummaryStatistics(); stats1.accept(1500); stats1.accept(2500); IntSummaryStatistics stats2 = new IntSummaryStatistics(); stats2.accept(3500); stats2.accept(4500); stats1.combine(stats2); System.out.println("Minimum price: " + stats1.getMin()); System.out.println("Maximum price: " + stats1.getMax()); System.out.println("Average price: " + stats1.getAverage()); System.out.println("Total number of items: " + stats1.getCount()); System.out.println("Total sum: " + stats1.getSum()); } }

Neste exemplo, são criados dois objetos IntSummaryStatistics, cada um contendo valores adicionados utilizando o método accept(). O método combine() então mescla as estatísticas de ambos os objetos, atualizando o total de contagem, soma e valores mínimo/máximo.

Como resultado, stats1 agora armazena as estatísticas combinadas de todos os números, que são então exibidas no console.

1. Qual classe é utilizada para coletar estatísticas de valores int na Stream API?

2. Qual método adiciona um valor a um objeto IntSummaryStatistics?

3. Qual método mescla dois objetos IntSummaryStatistics?

question mark

Qual classe é utilizada para coletar estatísticas de valores int na Stream API?

Select the correct answer

question mark

Qual método adiciona um valor a um objeto IntSummaryStatistics?

Select the correct answer

question mark

Qual método mescla dois objetos IntSummaryStatistics?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 9

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

What is the difference between summaryStatistics() and using individual methods like min() or max()?

Can you explain how to use summaryStatistics() with DoubleStream or LongStream?

How does the combine() method work in parallel processing scenarios?

Awesome!

Completion rate improved to 2.33

bookRecuperando Métricas Resumidas de Stream com o Método summaryStatistics()

Deslize para mostrar o menu

Ao processar dados, muitas vezes é necessário calcular métricas estatísticas como soma, média, mínimo, máximo e contagem de elementos.

Você já aprendeu como encontrar os valores mínimo e máximo em um stream, mas existe um método que reúne todas essas estatísticas de uma só vez. A Java Stream API oferece um método dedicado chamado summaryStatistics(), que simplifica a obtenção de estatísticas gerais de streams numéricos.

Método summaryStatistics()

A Stream API também fornece streams numéricos especializados: IntStream, LongStream e DoubleStream. Eles funcionam como streams regulares, mas são otimizados para tipos primitivos específicos.

Cada um desses streams numéricos inclui o método summaryStatistics(), que retorna uma instância de IntSummaryStatistics, LongSummaryStatistics ou DoubleSummaryStatistics, respectivamente. Esses objetos contêm as principais métricas estatísticas, como contagem, soma, mínimo, máximo e média.

IntSummaryStatistics summaryStatistics();
LongSummaryStatistics summaryStatistics();
DoubleSummaryStatistics summaryStatistics();

Ao chamar summaryStatistics() em um stream numérico, é possível coletar e analisar rapidamente dados estatísticos sobre seus valores.

Métodos Principais

Em Java, as classes IntSummaryStatistics, LongSummaryStatistics e DoubleSummaryStatistics são utilizadas para coletar estatísticas sobre dados numéricos. Elas fornecem um conjunto de métodos para extrair métricas estatísticas principais.

Exemplo Prático

Em uma loja online, é necessário analisar os preços dos produtos para determinar o preço mínimo e o preço máximo, o preço médio e o número total de itens.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.util.List; import java.util.IntSummaryStatistics; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3500, 1200, 4000, 2500); IntSummaryStatistics stats = prices.stream() .collect(Collectors.summarizingInt(Integer::intValue)); System.out.println("Minimum price: " + stats.getMin()); System.out.println("Maximum price: " + stats.getMax()); System.out.println("Average price: " + stats.getAverage()); System.out.println("Total number of items: " + stats.getCount()); System.out.println("Total sum: " + stats.getSum()); } }

Neste código, é criada uma lista de preços de produtos e convertida em um stream numérico. O método Collectors.summarizingInt(Integer::intValue) coleta dados estatísticos e os armazena em um objeto IntSummaryStatistics. Em seguida, são utilizados os métodos getMin(), getMax(), getAverage(), getCount() e getSum() para extrair os valores necessários.

Métodos Adicionais

O método combine() mescla dois objetos de estatísticas. Isso é útil ao processar dados em múltiplas threads ou ao consolidar estatísticas de diferentes fontes.

O método accept() adiciona manualmente valores a um objeto de estatísticas, sendo útil para atualizar dados dinamicamente.

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; import java.util.IntSummaryStatistics; public class Main { public static void main(String[] args) { IntSummaryStatistics stats1 = new IntSummaryStatistics(); stats1.accept(1500); stats1.accept(2500); IntSummaryStatistics stats2 = new IntSummaryStatistics(); stats2.accept(3500); stats2.accept(4500); stats1.combine(stats2); System.out.println("Minimum price: " + stats1.getMin()); System.out.println("Maximum price: " + stats1.getMax()); System.out.println("Average price: " + stats1.getAverage()); System.out.println("Total number of items: " + stats1.getCount()); System.out.println("Total sum: " + stats1.getSum()); } }

Neste exemplo, são criados dois objetos IntSummaryStatistics, cada um contendo valores adicionados utilizando o método accept(). O método combine() então mescla as estatísticas de ambos os objetos, atualizando o total de contagem, soma e valores mínimo/máximo.

Como resultado, stats1 agora armazena as estatísticas combinadas de todos os números, que são então exibidas no console.

1. Qual classe é utilizada para coletar estatísticas de valores int na Stream API?

2. Qual método adiciona um valor a um objeto IntSummaryStatistics?

3. Qual método mescla dois objetos IntSummaryStatistics?

question mark

Qual classe é utilizada para coletar estatísticas de valores int na Stream API?

Select the correct answer

question mark

Qual método adiciona um valor a um objeto IntSummaryStatistics?

Select the correct answer

question mark

Qual método mescla dois objetos IntSummaryStatistics?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 9
some-alt