Verificação de Elementos do Stream em Relação a uma Condição com allMatch()
Ao trabalhar com fluxos de dados, muitas vezes é necessário verificar se os elementos atendem a determinadas condições. Por exemplo, pode ser necessário confirmar se todos os itens em um carrinho de compras estão em estoque, se pelo menos um item está com desconto ou se não há pedidos cancelados.
Para lidar com esses casos, a Stream API oferece três métodos úteis: allMatch(), anyMatch() e noneMatch(). Esses métodos permitem verificar rapidamente se os elementos do fluxo satisfazem um determinado predicado.
Método allMatch()
O método allMatch() verifica se todos os elementos em um fluxo satisfazem um determinado predicado. Se pelo menos um elemento não atender à condição, o método retorna false.
boolean allMatch(Predicate<? super T> predicate)
Este método recebe um predicado—uma função que retorna um booleano—e o aplica a cada elemento do stream. Se todos os elementos satisfizerem a condição, retorna true; caso contrário, retorna false.
Exemplo prático
Em uma loja online, o frete grátis está disponível se todos os itens no carrinho custarem mais de $10. É necessário verificar se o frete grátis se aplica ao pedido atual.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(15, 20, 12, 9); // Item prices boolean freeShipping = prices.stream().allMatch(price -> price > 10); if (freeShipping) { System.out.println("Free shipping applied."); } else { System.out.println("Not all items qualify for free shipping."); } } }
Neste código, é criada uma lista de preços de itens: [15, 20, 12, 9]. O método allMatch(price -> price > 10) verifica se todos os itens custam mais de $10. Se sim, uma mensagem sobre o sucesso do frete grátis é exibida; caso contrário, aparece uma mensagem indicando que nem todos os itens se qualificam.
Método anyMatch()
O método anyMatch() verifica se pelo menos um elemento em um stream satisfaz um predicado fornecido. Se ao menos um elemento atender à condição, o método retorna true e interrompe o processamento.
boolean anyMatch(Predicate<? super T> predicate)
Este método recebe um predicado e o aplica a cada elemento no stream. Assim que encontra um elemento correspondente, retorna true e interrompe a execução.
Exemplo Prático
Uma loja online oferece um programa VIP se pelo menos um item no carrinho custar mais de $500. É necessário verificar se o cliente se qualifica para o status VIP.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(530, 300, 40, 120); // Item prices boolean hasExpensiveItem = prices.stream().anyMatch(price -> price > 500); if (hasExpensiveItem) { System.out.println("Customer qualifies for VIP status."); } else { System.out.println("No expensive items in the cart."); } } }
Aqui, o método anyMatch(price -> price > 500) verifica se existe pelo menos um item com preço superior a $500. Se encontrado, hasExpensiveItem torna-se true, e uma mensagem sobre qualificação para o status VIP é exibida; caso contrário, uma mensagem indicando a ausência de itens caros no carrinho aparece.
Método noneMatch()
O método noneMatch() verifica se nenhum dos elementos em um stream satisfaz um determinado predicado. Se nenhum elemento corresponder à condição, o método retorna true.
boolean noneMatch(Predicate<? super T> predicate)
Este método recebe um predicado e o aplica a cada elemento no stream. Se nenhum elemento atender à condição, retorna true; caso contrário, retorna false.
Exemplo prático
Uma loja online não permite itens com preço abaixo de zero. É necessário verificar se há algum desses itens no carrinho.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3000, 0); // Item prices boolean noFreeItems = prices.stream().noneMatch(price -> price < 0); if (noFreeItems) { System.out.println("All items have valid prices."); } else { System.out.println("The cart contains an item with a zero price."); } } }
Neste exemplo, noneMatch(price -> price < 0) verifica se não há itens com preço inferior a $0. Se todos os itens possuem um preço válido, uma mensagem de confirmação é exibida; caso contrário, uma mensagem indicando a presença de um item com preço inválido é apresentada.
1. Qual método verifica se pelo menos um elemento no stream satisfaz uma condição?
2. Qual método deve ser utilizado para garantir que não existam valores menores que zero em uma lista?
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
Verificação de Elementos do Stream em Relação a uma Condição com allMatch()
Deslize para mostrar o menu
Ao trabalhar com fluxos de dados, muitas vezes é necessário verificar se os elementos atendem a determinadas condições. Por exemplo, pode ser necessário confirmar se todos os itens em um carrinho de compras estão em estoque, se pelo menos um item está com desconto ou se não há pedidos cancelados.
Para lidar com esses casos, a Stream API oferece três métodos úteis: allMatch(), anyMatch() e noneMatch(). Esses métodos permitem verificar rapidamente se os elementos do fluxo satisfazem um determinado predicado.
Método allMatch()
O método allMatch() verifica se todos os elementos em um fluxo satisfazem um determinado predicado. Se pelo menos um elemento não atender à condição, o método retorna false.
boolean allMatch(Predicate<? super T> predicate)
Este método recebe um predicado—uma função que retorna um booleano—e o aplica a cada elemento do stream. Se todos os elementos satisfizerem a condição, retorna true; caso contrário, retorna false.
Exemplo prático
Em uma loja online, o frete grátis está disponível se todos os itens no carrinho custarem mais de $10. É necessário verificar se o frete grátis se aplica ao pedido atual.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(15, 20, 12, 9); // Item prices boolean freeShipping = prices.stream().allMatch(price -> price > 10); if (freeShipping) { System.out.println("Free shipping applied."); } else { System.out.println("Not all items qualify for free shipping."); } } }
Neste código, é criada uma lista de preços de itens: [15, 20, 12, 9]. O método allMatch(price -> price > 10) verifica se todos os itens custam mais de $10. Se sim, uma mensagem sobre o sucesso do frete grátis é exibida; caso contrário, aparece uma mensagem indicando que nem todos os itens se qualificam.
Método anyMatch()
O método anyMatch() verifica se pelo menos um elemento em um stream satisfaz um predicado fornecido. Se ao menos um elemento atender à condição, o método retorna true e interrompe o processamento.
boolean anyMatch(Predicate<? super T> predicate)
Este método recebe um predicado e o aplica a cada elemento no stream. Assim que encontra um elemento correspondente, retorna true e interrompe a execução.
Exemplo Prático
Uma loja online oferece um programa VIP se pelo menos um item no carrinho custar mais de $500. É necessário verificar se o cliente se qualifica para o status VIP.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(530, 300, 40, 120); // Item prices boolean hasExpensiveItem = prices.stream().anyMatch(price -> price > 500); if (hasExpensiveItem) { System.out.println("Customer qualifies for VIP status."); } else { System.out.println("No expensive items in the cart."); } } }
Aqui, o método anyMatch(price -> price > 500) verifica se existe pelo menos um item com preço superior a $500. Se encontrado, hasExpensiveItem torna-se true, e uma mensagem sobre qualificação para o status VIP é exibida; caso contrário, uma mensagem indicando a ausência de itens caros no carrinho aparece.
Método noneMatch()
O método noneMatch() verifica se nenhum dos elementos em um stream satisfaz um determinado predicado. Se nenhum elemento corresponder à condição, o método retorna true.
boolean noneMatch(Predicate<? super T> predicate)
Este método recebe um predicado e o aplica a cada elemento no stream. Se nenhum elemento atender à condição, retorna true; caso contrário, retorna false.
Exemplo prático
Uma loja online não permite itens com preço abaixo de zero. É necessário verificar se há algum desses itens no carrinho.
Main.java
1234567891011121314151617package com.example; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> prices = List.of(1500, 2000, 3000, 0); // Item prices boolean noFreeItems = prices.stream().noneMatch(price -> price < 0); if (noFreeItems) { System.out.println("All items have valid prices."); } else { System.out.println("The cart contains an item with a zero price."); } } }
Neste exemplo, noneMatch(price -> price < 0) verifica se não há itens com preço inferior a $0. Se todos os itens possuem um preço válido, uma mensagem de confirmação é exibida; caso contrário, uma mensagem indicando a presença de um item com preço inválido é apresentada.
1. Qual método verifica se pelo menos um elemento no stream satisfaz uma condição?
2. Qual método deve ser utilizado para garantir que não existam valores menores que zero em uma lista?
Obrigado pelo seu feedback!