Recuperando 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
1234567891011121314151617181920package 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
1234567891011121314151617181920212223package 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?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Recuperando 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
1234567891011121314151617181920package 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
1234567891011121314151617181920212223package 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?
Obrigado pelo seu feedback!