0% ont trouvé ce document utile (0 vote)
35 vues13 pages

Java

Transféré par

Roya LARIBI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
35 vues13 pages

Java

Transféré par

Roya LARIBI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Lambda Expression est une manière simplifiée pour l'implémentation d'une interface qui n'a qu'une

seule méthode abstraite (SAM)

SAMI (Single Abstract Method Interface) = interface fonctionnelle

Consumer<String> afficher = String param ->


[Link](param);

Consumer<String> afficher = param -> [Link](param);

Consumer<String> afficher = String param ->


[Link](param); -> no
Consumer<String> afficher = (String param) -> [Link](param); ->
yes

Consumer afficher = (String param) ->


[Link](param); -> no

Si l'expression lambda possède plusieurs paramètres alors ils


doivent être entourés obligatoirement par des parenthèses et
séparés les uns des autres par une virgule. BiFunction<Integer,
Integer, Long> additionner = (val1, val2) -> (long) val1 + val2;

Si l'expression ne produit pas de résultat, celle-ci est


simplement exécutée. Il n'est pas nécessaire d'entourer
d'accolades si le corps de l'expression invoque une méthode
dont la valeur de retour est void.

() -> 123
N'accepter aucun paramètre et renvoyer la valeur
() -> { return 123
123 };

Il est possible d'utiliser le modificateur final sur les


paramètres si leur type est précisé explicitement.
Comparator<String> comparator = (final String chaine1, final String
chaine2)
-> [Link]([Link](),[Link]());

() -> { for (int i = 0; i < 10; i++) Exécuter la méthode traiter() dix
traiter(); } fois

p -> [Link]() == [Link]


&& [Link]() >= 7
&& [Link]() <= 77

1. interface Sayable{
2. public String say(String name);
3. }
4.
5. public class LambdaExpressionExample4{
6. public static void main(String[] args) {
7.
8. // Lambda expression with single parameter.
9. Sayable s1=(name)->{
10. return "Hello, "+name;
11. };
12. [Link]([Link]("Sonoo"));

13. Output:

14. Hello, Sonoo


Comparable n’est pas interface fonct car elle prend this at pas anonyme comme compartor malgré a
un seul fc abstract

.map retourne un stream

.maptoint retourne intstream


Un retour de stream il faut affecter dans une variable

Int nb = [Link]. … ->stream typé


Car predicate tekhdm b test o trajae boolean

Pour rechercher une correspondance avec des éléments, un


Stream propose plusieurs opérations :

 anyMatch(Predicate) : renvoie un booléen qui précise si


l'évaluation du Predicate sur au moins un élément vaut
true
 allMatch(Predicate) : renvoie un booléen qui précise si
l'évaluation du Predicate sur tous les éléments vaut true
 noneMatch(Predicate) : renvoie un booléen qui précise si
l'évaluation du Predicate sur tous les éléments vaut false

 predicate fonctionne avec match b anwe3o et filter

Pour transformer des données, un Stream propose plusieurs


opérations :

 map(Function) : applique la Function fournie en


paramètre pour transformer l'élément en créant un
nouveau
 flatMap(Function) : applique la Function fournie en
paramètre pour transformer l'élément en créant zéro, un
ou plusieurs éléments
 function tekhdem mae map

 optionnal tekhdm mae find, match, fc alg , reduce

String lettres = [Link]("a", "b", "c", "d")


.reduce((accumulator, item) -> accumulator + ", "
+ item)
.orElse("");
[Link](lettres);

Résultat :
a, b, c, d

 item howa l’élément qui est en train de parcourir t accumulator howa


l’élément précédent

public static void main(String[] args) {


List<Integer> entiers = [Link](1, 2, 3, 4, 5, 6);
Integer total = [Link]()
.reduce(0, (valeurAccumulee, valeur) -> valeurAccumulee +
valeur);
[Link]("total=" + total);
}
}

0 est la valeur initial Si le Stream ne contient aucun élément, alors


c'est la valeur initiale qui est renvoyée.

Les 2 parametres doit être de même type

Reduce = concaténation

Résultat :
total=21
String lettres = [Link]("a", "b", "c", "d")
.limit(0)
.reduce("X", (accumulator, item) -> accumulator + ", " + item);
[Link](lettres);
Résultat :

XSi le Stream ne contient aucun élément, alors c'est la valeur


initiale qui est renvoyée.

int produit = [Link](1, 2, 3, 4, 5)


.reduce(1, (a, b) -> a * b);
[Link](produit);

Résultat :

12
COLLECT
List<String> elements = [Link]("elem1", "elem2", "elem2", "elem3",
"elem4");
StringBuilder concat =
[Link]()
.collect(() -> new StringBuilder(), (sb, s) -> [Link](";")
.append(s),(sb1, sb2) -> [Link](sb2));
[Link]([Link]());
}
}

Résultat :
;elem1;elem2;elem2;elem3;elem4
La surcharge <R> collect(Supplier<R> resultSupplier,
BiConsumer<R, T> accumulator, BiConsumer<R, R>
combiner) de la méthode collect() attend trois paramètres :

 supplier : pour fournir une instance du conteneur vide


 accumulator : pour ajouter un élément dans le conteneur
 combiner : pour combiner deux conteneurs lors de
l'utilisation du Stream en parallèle

L'opération skip() permet d'ignorer un certain nombre


d'éléments du Stream. Les premiers éléments du Stream sont
ignorés

.sorted([Link](String::length)

L’execution s’applique sur chaque element, tant que l’instruction precedante est correcte , même
elle n’est pas correcte elle s’excute même mais sans passer à la suivante comme filter dans benoit

Andre comlpete jusq’au foreach

Peek utilise consumer car elle accepte un résultat


L’ordre du résultat

Il est possible qu'il n'y ait pas de résultat à l'issu des


traitements d'un Stream. Java 8 propose la classe Optional
qui encapsule une valeur ou l'absence de valeur.

Certaines opérations d'un Stream renvoie donc un objet de


type [Link] qui permet de préciser s'il y a un
résultat ou non. C'est notamment le cas dans les opérations
de réduction, des opérations de recherche (findXXX) ou de
recherche de correspondance (XXXMatch) sur un Stream
vide.

Les fc terminales : foreach b anwe3o , collect, reduce, fc


algebrique , match (permet de détecter la redondance d’un
elem )
Méthode de référence Employee ::getsalary cad e-
>[Link]() en lambda

Employee ( nom du classe) :: nom fc

Les fc intermédiaire
Filter , map b anwe3o, distinct, sorted,skip,limit,

Les fc terminales : foreach b anwe3o , collect, reduce, fc


algebrique , match (permet de détecter la redondance d’un
elem )

Les fc optionnles : find , match , fc algb count max min


sum,get,ifpres
Les méthodes min() et max() permettent respectivement de
retourner la valeur minimale et maximale issue des
traitements du Stream.

Elles attendent en paramètre un Comparator qui permet de


préciser l'ordre de comparaison des éléments.

[Link]().min([Link](element -
> [Link]()));

on utilise un map lorsque je veux transformer un stream d’employé en


stream string lorsque je vais appliquer une modification exp retourner une
chaine dont les noms commence par majus
This function describes how each element in the original stream
is transformed into an element in the new stream.

En cas ou fama duplication de salaire


Donc 1000 imen sana

Vous aimerez peut-être aussi