Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Harjoittelu Stream API:n Kanssa | Edistyneet Java-Ominaisuudet ja -Tekniikat
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java-tietorakenteet

bookHarjoittelu Stream API:n Kanssa

Nyt on aika harjoitella Stream API:n käyttöä. Sinulla on muutama yksinkertainen tehtävä, joissa käytetään erilaisia Stream API -menetelmiä. Tällä kertaa ei anneta tarkkoja tehtävänantoja. Sen sijaan saat listan, jonka kanssa työskennellä, sekä tiedon siitä, mikä on odotettu tulos. Toisin sanoen tavoitteesi on suorittaa listalle operaatioita saavuttaaksesi odotetun lopputuloksen.

Tällainen tehtävä auttaa kehittämään tulosten saavuttamisen taitoa ilman selkeää määrittelyä. Näet vain syötetiedot ja odotetun tuloksen.

Sinun tulee käyttää Stream API:a näiden tehtävien ratkaisemiseen!

Tehtävä 1:

Syöte:

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

Käytä Stream API:a neliöidäksesi jokainen luku listassa ja kerätäksesi tulokset uuteen listaan. Odotettu tulos:

[1, 4, 9, 16, 25]

Käytä tässä map()- ja toList()-metodeja.

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

Tehtävä 2:

Syöte:

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

Käytä Stream API:a löytääksesi listan pisimmän nimen pituuden. Odotettu tulos:

7

Käytä map()- ja max()-välivaihemetodeja sekä get()-päätemetodia.

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

Tehtävä 3

Syöte:

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

Käytä Stream API:a laskeaksesi kaikkien lauseiden erillisten sanojen kokonaismäärän (kirjainkoolla ei ole väliä). Odotettu tulos:

37

Käytä flatMap()- ja distinct()-välivaihemetodeja sekä count()-päätemetodia.

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

Tehtävä 4:

Syöte:

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

Käytä Stream API:a löytääksesi kahden ensimmäisen parillisen pituuden omaavan sanan yhdistelmän.

Expected Output:

bananacherry

Käytä filter()- ja limit()-välivaihemetodeja sekä collect()-päätemetodia.

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

Tehtävä 5:

Syöte:

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

Käytä Stream API:a löytääksesi listan parillisten lukujen neliöiden summan.

Odotettu tulos:

220

Käytä mapToInt()- ja filter()-välivaihemetodeja sekä sum()-päätemetodia.

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

Hienoa työtä!

Jos olet suorittanut kaikki tehtävät, erinomaista!

Jotkin tehtävissä käytetyt metodit eivät välttämättä ole olleet aiemmin esillä. Tutustu niihin avaamalla IntelliJ IDEA ja tarkistamalla niiden toiminnallisuus.

Ohjelmointi on jatkuvaa oppimista, joten tutki uusia ratkaisuja, etsi tietoa verkosta ja hyödynnä dokumentaatiota tarvittaessa.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

bookHarjoittelu Stream API:n Kanssa

Pyyhkäise näyttääksesi valikon

Nyt on aika harjoitella Stream API:n käyttöä. Sinulla on muutama yksinkertainen tehtävä, joissa käytetään erilaisia Stream API -menetelmiä. Tällä kertaa ei anneta tarkkoja tehtävänantoja. Sen sijaan saat listan, jonka kanssa työskennellä, sekä tiedon siitä, mikä on odotettu tulos. Toisin sanoen tavoitteesi on suorittaa listalle operaatioita saavuttaaksesi odotetun lopputuloksen.

Tällainen tehtävä auttaa kehittämään tulosten saavuttamisen taitoa ilman selkeää määrittelyä. Näet vain syötetiedot ja odotetun tuloksen.

Sinun tulee käyttää Stream API:a näiden tehtävien ratkaisemiseen!

Tehtävä 1:

Syöte:

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

Käytä Stream API:a neliöidäksesi jokainen luku listassa ja kerätäksesi tulokset uuteen listaan. Odotettu tulos:

[1, 4, 9, 16, 25]

Käytä tässä map()- ja toList()-metodeja.

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

Tehtävä 2:

Syöte:

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

Käytä Stream API:a löytääksesi listan pisimmän nimen pituuden. Odotettu tulos:

7

Käytä map()- ja max()-välivaihemetodeja sekä get()-päätemetodia.

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

Tehtävä 3

Syöte:

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

Käytä Stream API:a laskeaksesi kaikkien lauseiden erillisten sanojen kokonaismäärän (kirjainkoolla ei ole väliä). Odotettu tulos:

37

Käytä flatMap()- ja distinct()-välivaihemetodeja sekä count()-päätemetodia.

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

Tehtävä 4:

Syöte:

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

Käytä Stream API:a löytääksesi kahden ensimmäisen parillisen pituuden omaavan sanan yhdistelmän.

Expected Output:

bananacherry

Käytä filter()- ja limit()-välivaihemetodeja sekä collect()-päätemetodia.

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

Tehtävä 5:

Syöte:

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

Käytä Stream API:a löytääksesi listan parillisten lukujen neliöiden summan.

Odotettu tulos:

220

Käytä mapToInt()- ja filter()-välivaihemetodeja sekä sum()-päätemetodia.

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

Hienoa työtä!

Jos olet suorittanut kaikki tehtävät, erinomaista!

Jotkin tehtävissä käytetyt metodit eivät välttämättä ole olleet aiemmin esillä. Tutustu niihin avaamalla IntelliJ IDEA ja tarkistamalla niiden toiminnallisuus.

Ohjelmointi on jatkuvaa oppimista, joten tutki uusia ratkaisuja, etsi tietoa verkosta ja hyödynnä dokumentaatiota tarvittaessa.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 5
some-alt