This shows you the differences between two versions of the page.
|
poo-ca-cd:laboratoare:java-features [2025/01/07 22:08] dragos.dragan1403 [Limbajul Kotlin] |
poo-ca-cd:laboratoare:java-features [2025/01/08 10:20] (current) dragos.dragan1403 [flatMap și groupingBy] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Laboratorul 11: Java features ===== | + | ===== Laboratorul 11: Streams. Java features ===== |
| ==== Obiective ==== | ==== Obiective ==== | ||
| - | * înțelegerea conceptelor de expresii lambda și de streams | ||
| * familiarizarea cu metode default și cu metode statice în interfețe | * familiarizarea cu metode default și cu metode statice în interfețe | ||
| - | * utilizarea de structuri sintactice introduse începând cu Java 8 (var) | + | * înțelegerea conceptelor de expresii lambda |
| + | * utilizare streams :-) | ||
| + | |||
| + | <hidden> | ||
| + | * utilizarea de structuri sintactice introduse începând cu Java 8 (var) | ||
| + | </hidden> | ||
| ==== Metode statice și metode default în interfețe ==== | ==== Metode statice și metode default în interfețe ==== | ||
| Începând cu Java 8, putem implementa metode în cadrul interfețelor, unde, în mod clasic, avem doar metode neimplementate (abstracte). Mai precis, noi putem să implementăm trei tipuri de metode: default (non-statice), statice, iar începând cu Java 9 și private. | Începând cu Java 8, putem implementa metode în cadrul interfețelor, unde, în mod clasic, avem doar metode neimplementate (abstracte). Mai precis, noi putem să implementăm trei tipuri de metode: default (non-statice), statice, iar începând cu Java 9 și private. | ||
| Line 223: | Line 227: | ||
| </code> | </code> | ||
| - | Interfața [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html | Function<T, R>]] expune și metode care pot înlănșui alte operașii de tipul Function. | + | Interfața [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html | Function<T, R>]] expune și metode care pot înlănțui alte operații de tipul Function. |
| * [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html#andThen(java.util.function.Function) | andThen(Function<T, R>)]] - functia data ca parametru este executata dupa cea la care este apelata metoda | * [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html#andThen(java.util.function.Function) | andThen(Function<T, R>)]] - functia data ca parametru este executata dupa cea la care este apelata metoda | ||
| * [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html#compose(java.util.function.Function) | compose(Function<T, R>)]] - functia data ca parametru este executata inainte de cea la care este apelata metoda | * [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html#compose(java.util.function.Function) | compose(Function<T, R>)]] - functia data ca parametru este executata inainte de cea la care este apelata metoda | ||
| Line 268: | Line 272: | ||
| <code java> | <code java> | ||
| IntStream.range(1, 4) | IntStream.range(1, 4) | ||
| - | .forEach(System.out::println); | + | .forEach(System.out::println); // 1 2 3 |
| </code> | </code> | ||
| Line 324: | Line 328: | ||
| String[] myNewArray = Arrays.stream((String[])myArray.toArray()) | String[] myNewArray = Arrays.stream((String[])myArray.toArray()) | ||
| .filter(x -> x.length() > 4) | .filter(x -> x.length() > 4) | ||
| - | .toArray(String[]::new); | + | .toArray(String[]::new); // "monkey", "elephant", "zebra" |
| </code> | </code> | ||
| Line 459: | Line 463: | ||
| */ | */ | ||
| - | <hidden> | ||
| <hidden> | <hidden> | ||
| ==== Limbajul Kotlin ==== | ==== Limbajul Kotlin ==== | ||