Java 8 Flashcards

1
Q

C’est quoi les streams?

A
  • une nouvelle façon de gérer les collections
  • un stream ne stocke pas les données
  • un stream transféré d’une source vers une suite d’opération (exemple pipe sur unix)
  • un stream peut ne pas être borné
  • un stream n’est pas réutilisable
  • le chargement des données se fait de manière lazy
  • Les stream peuvent être parallélisés
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Combien y a-t-il de types d’opération qu’on peut réaliser sur un stream?

A

Deux : les opérations intermédiaire et les opérations terminales.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Donner un exemple d’opération intermédiaire sur un stream

A

Stream.map, Stream.filter

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Donner des exemples d’opération terminales

A

Stream.reduce,Stream.collect

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quelles sont les nouveautés dans Java 8?

A

Les streams
Programmation fonctionnelle
Lambda
Méthode par défaut dans les interfaces

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Comment peut-on créer un stream?

A

A partir des collections, qui fournit les méthodes : stream() et parallelStream

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

C’est quoi un lambda?

A

C’est une fonction (méthode) anonyme qui n’a pas de nom et qui peut être passée en argument d’une méthode.

Par contre, un lambda a un corps, un retour, et une liste d’exception qui peut être retourné

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

De quoi est former une expression lambda?

A

D’une liste de paramètre entre parenthèses, d’une flèche, et d’un corps.

(paramètres) -> expression; //expression : valeur retournée
ou
(paramètres) -> {expression;}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Où et quand utiliser les lambda?

A

Dans le contexte d’une interface fonctionnelle

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qu’est ce qu’une interface fonctionnelle?

A

C’est une interface qui ne spécifie qu’une et une seule méthode abstraite et utiliser pour typer une expression lambda

Example : Runnable, Comparator, Callable

Exemple dans Java 8 : Predicate, Consumer, Function

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

@FunctionlInterface

A

C’est une annotation qui permet d’indiquer qu’une interface est une interface fonctionnelle.

Une erreur est remontée à la compilation si l’interface comporte plus d’une méthode abstraite.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Predicate

A

Cette interface définit une méthode abstraite nommée “test” qui accepte en argument un objet de type T et qui retourne une valeur booléenne.

@FunctionalInterface
public interface Predicate{
boolean test(T t);
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Consumer

A

Cette interface définit une méthode abstraite nommée “accept” qui accepte en argument un objet de type T et qui retourne rien.

@FunctionalInterface
public interface Consume{
void accept(T t);
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Function

A

Cette interface définit une méthode abstraite nommée “apply” qui accepte en argument un objet de type T et retourne un objet de type R.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Est-ce que les lambdas peuvent accéder à des variables locales?

A

Oui, mais à condition que ceux-ci soit déclarer final.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qu’est-ce que le référencement de méthode?

A

La référence de méthode permet d’utiliser une méthode existant et de l’utiliser en paramètre d’une méthode comme un lambda.

Exemple : inventory.sort(comparing(Apple::getWeight));

La référence de méthode peut se faire sur une méthode statique, méthode d’instance de n’importe quel type, méthode d’instance d’un objet existant.

17
Q

En Java 8, comment peut-on chaîner des comparateurs

A

La classe Comparator fournit une méthode “comparing” qui retourne les clé de comparaison.

Sur cet objet retourné, la méthode “reversed()” permet d’inverser le résultat.

Sur cet objet retourné, la méthode “thenComparing(Class:elementDeComparaison)” permet de chaîner un autre comparateur.

Il est également possible de composer une liste de comparateur via les méthode and et or.

18
Q

Comment compose-t-on plusieurs expressions représentées par l’interface Function.

A

L’interface “Function” fournit deux méthodes “andThen” et “compose”.

andThen retourne une fonction qui peut être utilisé pour une autre fonction

compose permet d’avoir le résultat.

Permet de créer des suites de traitement de méthode.

19
Q

Qu’est-ce que le target type dans une expression lambda?

A

C’est le type attendu

20
Q

Par quel moyen peut-on exécuter plusieurs stream en parallèle?

A

via la méthode parallelStream

21
Q

A quoi sert l’opération map ?

A

Applique une fonction sur les éléments. C’est une opération intermédiaire

22
Q

Qu’est ce qu’une interface fonctionnelle?

A

Interface avec une seule méthode utilisée en tant que type d’une expression lambda

23
Q

Quels sont les différents types d’interface fonctionnelle?

A

Predicate, Consumer,Function, Supplier, UnaryOperator,BinaryOperator

24
Q

Qu’est ce qu’une expression lambda

A

Méthode sans nom qui permet de passer un comportement comme si c’était une donnée