Avatar ·

Qual é o análogo do LINQ em Java? Como trabalhar eficientemente com coleções?

Olá, colegas! Sou um desenvolvedor Java iniciante, migrando do C#. Lá, eu usava ativamente o LINQ (Language Integrated Query) para filtrar, ordenar e projetar dados em coleções. Por exemplo, este código em C# era familiar para mim:

var numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var evenSquares = numbers
    .Where(n => n % 2 == 0)
    .Select(n => n * n)
    .ToList();
// Resultado: [4, 16, 36]

Agora em Java, estou trabalhando com coleções e percebo que loops for-each comuns para essas tarefas geram muito código boilerplate. Por exemplo, é assim que eu atualmente filtro uma lista:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenSquares = new ArrayList<>();
for (Integer n : numbers) {
    if (n % 2 == 0) {
        evenSquares.add(n * n);
    }
}

Isso funciona, mas o código fica verboso, especialmente quando é necessário executar várias operações em sequência (filtragem, ordenação,