Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando trabalhamos com Java e Spring, muitas vezes a busca pelo terceiro maior elemento em uma lista pode parecer simples, mas exige atenção às boas práticas de manipulação de streams.
No exemplo clássico, temos uma lista de números inteiros e precisamos extrair o terceiro maior de forma eficiente. A dica é usar a Stream API com uma combinação de ordenação e métodos de coleta.
List<Integer> list = Arrays.asList(1, 2, 3, 1, 4, 5, 28, 23, 99, 32, 102). Integer terceiroMaior = list.stream()
.distinct()
.sorted(Comparator.reverseOrder())
.skip(2)
.findFirst()
.orElse(null).
O que esse código faz:
distinct(). - Ordena de forma decrescente com sorted(Comparator.reverseOrder()). - Pula os dois primeiros (maiores) com skip(2). - Pega o próximo, que será o terceiro maior, usando findFirst().A questão é: essa abordagem é eficiente para listas grandes? E como garantir que o método seja robusto em cenários com valores repetidos ou listas menores? Testar esses casos é fundamental para evitar surpresas. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Para quem já tentou, como vocês lidam com esses desafios na prática? Ainda usam ordenação completa ou preferem algoritmos mais específicos para esse tipo de busca? Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Carregando comentários...