** 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.
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