J'ai examiné l'expression lambda de Java, l'API de flux, six mois après avoir commencé Java.

Qu'est-ce qu'un type lambda après tout?

** Technologie introduite à partir de Java SE 8 **

Les expressions Lambda vous permettent d'écrire des programmes multithread avec plusieurs cœurs de processeur dans les ordinateurs d'aujourd'hui avec un code beaucoup plus simple que jamais.

Citation Les expressions Lambda et les API de flux simplifient la programmation Java! --Pourquoi vous devriez passer à Java SE 8 maintenant https://builder.japan.zdnet.com/sp_oracle/35065645/

Les expressions lambda semblent simplifier le codage.

Pour le moment, je sens que je peux certainement l'utiliser quand je peux l'utiliser dans un style lambda.

Supposons que la liste contienne les données suivantes:

À partir de ces données, les personnes âgées de 40 ans et plus sont extraites et produites par ordre croissant d'âge. Supposons que vous écriviez un programme appelé.

List<Musician> users = Arrays.asList(
new Musician(1, "Oyamada", "Sohei", 34, "Préfecture de Fukuoka"),
new Musician(2, "Kishida", "Traditionnel", 42, "Kyoto"),
new Musician(3, "Mukai", "Hidenori", 45, "Préfecture de Fukuoka"),
new Musician(4, "Fujiwara", "Motoo", 39, "Préfecture de Chiba"),)

C'est aussi une citation, mais jusqu'à Java SE 7

Ci-dessous pour l'extraction de données de plus de 40 ans

Set<Musician> musician = new HashSet<>();
for (Musician user : users) {
    if (user.getAge() > 40 ) {
        musisian.add(user);
    }
}

Pour trier les données extraites ci-dessous

List<Musician> sorted = new ArrayList<>(musician);
Collections.sort(sorted, new Comparator<Musician>() {
    public int compare(Musician m1, Musician m2) {
        return Integer.compare(m1.getAge(), m2.getAge());
    }
})

Ci-dessous dans la sortie des données triées

for (Musician user : sorted) {
    System.out.println(user.getFirstName());
}

Je vais le coder comme ça.

Pour le processus que vous souhaitez réaliser, vous déclarez une nouvelle variable qui contient le résultat du tri dans le processus intermédiaire.

Si vous essayez de paralléliser ce processus, si vous déclarez une variable dans le processus intermédiaire, un traitement synchrone sera nécessaire, les performances diminueront et la parallélisation deviendra plus difficile à réaliser.

La maintenabilité du code n'est pas non plus très bonne.

Bien que le traitement essentiel soit l'extraction, le tri et la sortie des résultats, il existe de nombreux traitements intermédiaires.

** So Java SE 8 **

users.Stream()
.filter(u -> u.getAge() > 40)
.sorted((m1, m2) -> Integer.compare(m1.getAge(), m2.getAge()))
.forEach(user -> System.out.println(user.getFirstName()));

C'est extrêmement sensuel et vous pouvez coder simplement.

Qu'est-ce que l'API Stream

Vous pouvez facilement réaliser un traitement de parallélisation! Ce mec

users.parallelStream()
.filter(u -> u.getAge() > 40)
.sorted((m1, m2) -> Integer.compare(m1.getAge(), m2.getAge()))
.sequential()
.forEach(user -> System.out.println(user.getFirstName()));

users.parallelStream() Vous pouvez facilement implémenter le traitement parallèle simplement en ajoutant.

Au fait, ce qui suit .sequential()

Signifie que le traitement de sortie n'est pas traité en parallèle.

Ce qui précède est un résumé qui sert également de rappel.

Recommended Posts

J'ai examiné l'expression lambda de Java, l'API de flux, six mois après avoir commencé Java.
Premiers pas avec les anciens ingénieurs Java (Stream + Lambda)
Flux Java8, résumé de l'expression lambda
J'ai essayé d'utiliser l'API Java8 Stream
De nos jours, les expressions Java Lambda et l'API de flux
Repenser le modèle d'expression et de conception de flux Java8 Lambda - Modèle de commande -
[Java] Expression Lambda
Expression lambda Java
[Session d'étude interne] Principes de base de l'expression Java-Lambda et de l'API Stream- (13/07/2017)
[Pour les débutants] Comment utiliser Stream API après Java 8
Utiliser des expressions Java lambda en dehors de l'API Stream
J'ai essayé le type d'entrée / sortie de Java Lambda ~ Stream version ~
Repenser le modèle d'expression et de conception de flux Java8 Lambda - Modèle d'objet nul -
Repenser les modèles d'expression et de conception de flux Java8 - Modèle de méthode
expression 1 de la table lambda neutre java
[Java] API / carte de flux
Pratique de l'API Java8 Stream
Fonctionnalité d'expression lambda Java 8
mémo d'expression java lambda
expression lambda java [écriture de notes]
Etudier Java 8 (expression lambda)
Évaluer java8 ~ Type Lambda ~
Expression lambda Java à nouveau
[Cas d'amélioration Java] J'ai commencé à programmer après l'âge de 30 ans.
Gérez les exceptions avec fraîcheur avec les expressions lambda Java 8 et l'API Stream
Java8 Lambda Expression & Stream Design Pattern Repenser - Modèle de chaîne de responsabilité -
J'étais étrangement accro à l'utilisation de l'API Stream de Java avec Scala