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
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!