Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Praticando com Stream API | Recursos e Técnicas Avançadas de Java
Estruturas de Dados em Java

bookPraticando com Stream API

É hora de praticar com a Stream API. Você terá algumas tarefas simples envolvendo o uso de diversos métodos da Stream API. Desta vez, não serão fornecidas tarefas específicas. Em vez disso, será apresentada uma lista para trabalhar e qual deve ser o resultado esperado. Em outras palavras, seu objetivo é realizar operações na lista para alcançar o resultado esperado.

Esse tipo de tarefa pode ajudar a desenvolver a habilidade de alcançar resultados sem uma especificação clara. Você verá apenas os dados de entrada e o resultado esperado.

É necessário utilizar a Stream API para realizar essas tarefas!

Tarefa 1:

Entrada:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Write your code here } }

Utilize a Stream API para elevar ao quadrado cada número da lista e coletar o resultado em uma nova lista. Saída Esperada:

[1, 4, 9, 16, 25]

Utilize os métodos map() e toList() neste caso.

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> result = numbers.stream().map(e -> e * e).toList();
        System.out.println(result);
        // Write your code here
    }
}

Tarefa 2:

Entrada:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva"); // Write your code here } }

Utilize a Stream API para encontrar o comprimento do nome mais longo na lista. Saída Esperada:

7

Utilize os métodos intermediários map() e max(), e o método terminal get().

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva");
        Integer result = names
                .stream()
                .map(e -> e.length())
                .max((integer, newInteger) -> Integer.compare(integer, newInteger))
                .get();
        System.out.println(result);
        // Write your code here
    }
}

Tarefa 3

Entrada:

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> sentences = Arrays.asList( "Java Stream API provides a fluent interface for processing sequences of elements.", "It supports functional-style operations on streams of elements, such as map-reduce transformations.", "In this exercise, you need to count the total number of words in all sentences." ); // Write your code here } }

Utilize a Stream API para contar o número total de palavras distintas (ignorando maiúsculas e minúsculas) em todas as sentenças. Saída Esperada:

37

Utilize os métodos intermediários flatMap() e distinct(), e o método terminal count().

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> sentences = Arrays.asList(
                "Java Stream API provides a fluent interface for processing sequences of elements.",
                "It supports functional-style operations on streams of elements, such as map-reduce transformations.",
                "In this exercise, you need to count the total number of words in all sentences."
        );
        long count = sentences.stream()
                .flatMap(e -> Arrays.stream(e.split(" ")))
                .distinct()
                .count();
        System.out.println(count);
        // Write your code here
    }
}

Tarefa 4:

Entrada:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry"); // Write your code here } }

Utilize a Stream API para encontrar a concatenação das duas primeiras palavras que possuem comprimentos pares.

Saída Esperada:

bananacherry

Utilize os métodos intermediários filter() e limit(), e o método terminal collect().

package com.example;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
        String result = words.stream()
                .filter(e -> e.length() % 2 == 0)
                .limit(2)
                .collect(Collectors.joining());
        System.out.println(result);
        // Write your code here
    }
}

Tarefa 5:

Entrada:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // Write your code here } }

Utilize a Stream API para encontrar a soma dos quadrados dos números pares na lista.

Saída Esperada:

220

Utilize os métodos intermediários mapToInt() e filter(), e o método terminal sum().

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        int sum = numbers.stream()
                .mapToInt(e -> e * e)
                .filter(e -> e % 2 == 0)
                .sum();
        System.out.println(sum);
        // Write your code here
    }
}

Bom trabalho!

Se todas as tarefas foram concluídas, parabéns!

Alguns métodos nas tarefas podem não ter sido abordados anteriormente. Para explorá-los, abra o IntelliJ IDEA e verifique sua funcionalidade.

Programação envolve aprendizado contínuo, portanto, explore novas soluções, pesquise online e consulte a documentação sempre que necessário.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

bookPraticando com Stream API

Deslize para mostrar o menu

É hora de praticar com a Stream API. Você terá algumas tarefas simples envolvendo o uso de diversos métodos da Stream API. Desta vez, não serão fornecidas tarefas específicas. Em vez disso, será apresentada uma lista para trabalhar e qual deve ser o resultado esperado. Em outras palavras, seu objetivo é realizar operações na lista para alcançar o resultado esperado.

Esse tipo de tarefa pode ajudar a desenvolver a habilidade de alcançar resultados sem uma especificação clara. Você verá apenas os dados de entrada e o resultado esperado.

É necessário utilizar a Stream API para realizar essas tarefas!

Tarefa 1:

Entrada:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Write your code here } }

Utilize a Stream API para elevar ao quadrado cada número da lista e coletar o resultado em uma nova lista. Saída Esperada:

[1, 4, 9, 16, 25]

Utilize os métodos map() e toList() neste caso.

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> result = numbers.stream().map(e -> e * e).toList();
        System.out.println(result);
        // Write your code here
    }
}

Tarefa 2:

Entrada:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva"); // Write your code here } }

Utilize a Stream API para encontrar o comprimento do nome mais longo na lista. Saída Esperada:

7

Utilize os métodos intermediários map() e max(), e o método terminal get().

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva");
        Integer result = names
                .stream()
                .map(e -> e.length())
                .max((integer, newInteger) -> Integer.compare(integer, newInteger))
                .get();
        System.out.println(result);
        // Write your code here
    }
}

Tarefa 3

Entrada:

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> sentences = Arrays.asList( "Java Stream API provides a fluent interface for processing sequences of elements.", "It supports functional-style operations on streams of elements, such as map-reduce transformations.", "In this exercise, you need to count the total number of words in all sentences." ); // Write your code here } }

Utilize a Stream API para contar o número total de palavras distintas (ignorando maiúsculas e minúsculas) em todas as sentenças. Saída Esperada:

37

Utilize os métodos intermediários flatMap() e distinct(), e o método terminal count().

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> sentences = Arrays.asList(
                "Java Stream API provides a fluent interface for processing sequences of elements.",
                "It supports functional-style operations on streams of elements, such as map-reduce transformations.",
                "In this exercise, you need to count the total number of words in all sentences."
        );
        long count = sentences.stream()
                .flatMap(e -> Arrays.stream(e.split(" ")))
                .distinct()
                .count();
        System.out.println(count);
        // Write your code here
    }
}

Tarefa 4:

Entrada:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry"); // Write your code here } }

Utilize a Stream API para encontrar a concatenação das duas primeiras palavras que possuem comprimentos pares.

Saída Esperada:

bananacherry

Utilize os métodos intermediários filter() e limit(), e o método terminal collect().

package com.example;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
        String result = words.stream()
                .filter(e -> e.length() % 2 == 0)
                .limit(2)
                .collect(Collectors.joining());
        System.out.println(result);
        // Write your code here
    }
}

Tarefa 5:

Entrada:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // Write your code here } }

Utilize a Stream API para encontrar a soma dos quadrados dos números pares na lista.

Saída Esperada:

220

Utilize os métodos intermediários mapToInt() e filter(), e o método terminal sum().

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        int sum = numbers.stream()
                .mapToInt(e -> e * e)
                .filter(e -> e % 2 == 0)
                .sum();
        System.out.println(sum);
        // Write your code here
    }
}

Bom trabalho!

Se todas as tarefas foram concluídas, parabéns!

Alguns métodos nas tarefas podem não ter sido abordados anteriormente. Para explorá-los, abra o IntelliJ IDEA e verifique sua funcionalidade.

Programação envolve aprendizado contínuo, portanto, explore novas soluções, pesquise online e consulte a documentação sempre que necessário.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 5
some-alt