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