Récapitulez les éléments supplémentaires de la classe Optional dans Java 9

introduction

Depuis que je l'ai écrit à l'époque de Java 8, une page résumant les éléments supplémentaires de Java 9 Ce n'est pas si difficile, donc je pense que ça va avec les articles que j'ai déjà, mais j'étudie donc je m'en fiche.

L'article que j'ai écrit pour Java 8 peut être trouvé à ici.

JavaDoc http://download.java.net/java/jdk9/docs/api/java/util/Optional.html

éléments supplémentaires de ifPresent

ʻIfPresentOrElse a été ajouté cette fois. Le cas False de ʻif Present qui existait dans Java 8 peut maintenant être complété avec une seule méthode.

Optional<String> optional = Optional.ofNullable("");
Optional<String> optional2 =Optional.ofNullable(null);
optional.ifPresentOrElse(t -> System.out.println(true), () -> System.out.println(false));
optional2.ifPresentOrElse(t -> System.out.println(true), () -> System.out.println(false));
résultat:
true
false

Ajouter un flux

À partir de ce moment, il est possible de réécrire directement la classe Optinal en streaming.

Optional.ofNullable(null).stream().forEach(System.out::println);
résultat:

Notez que s'il est nul, le type ne peut être connu que s'il est défini sur Type d'objet.

OK List<Object> optional = Optional.ofNullable(null).stream().collect(Collectors.toList());
OK List<String> optional = Optional.ofNullable((String)null).stream().collect(Collectors.toList());
NG List<String> optional = Optional.ofNullable(null).stream().collect(Collectors.toList());

Si vous voulez convertir le type de liste en flux avec succès, vous devez le convertir en flux avec flatmap.

List<String> list = List.of("aaa", "bbb");
List<String> list2 = null;
Optional.ofNullable(list).stream().flatMap(t -> t.stream()).forEach(System.out::println);
Optional.ofNullable(list2).stream().flatMap(t -> t.stream()).forEach(System.out::println);
résultat:
aaa
bbb


S'il s'agit de map, il ne sera que de type Stream , vous devez donc utiliser flatmap. Pour ceux d'entre vous qui veulent faire de leur mieux avec map, j'ai légèrement cherché un moyen simple de convertir une chaîne à partir de Stream , mais je n'étais pas sûr. En regardant l'implémentation de flatmap, je ne pensais pas qu'elle devrait être implémentée ici. Utilisons-le docilement.

Ajouter ou méthode

Cette méthode ne fait rien si la valeur existe et ne s'exécute que si elle est Null. Puisque la valeur de retour est ʻOptional `, est-ce une image qui déclare une variable de substitution dans le cas de Null? Même si vous voulez décrire une condition un peu compliquée, il semble possible de l'exprimer de manière concise en utilisant «ou».

System.out.println(Optional.ofNullable("aaa").or(() -> Optional.of("bbb")).get());
System.out.println(Optional.ofNullable(null).or(() -> Optional.of("bbb")).get());
résultat:
aaa
bbb

en conclusion

Le JavaDoc ressemble à ces trois fonctionnalités ont été ajoutées. Je n'ai pas vu la note de publication parce que c'était gênant, je l'ajouterai donc s'il y a autre chose.

Recommended Posts

Récapitulez les éléments supplémentaires de la classe Optional dans Java 9
[Java] Supprimer les éléments de la liste
Obtenez le résultat de POST en Java
Examiner l'utilisation de la mémoire des éléments Java
Comparer les éléments d'un tableau (Java)
Examinez la liste des ID de fuseau horaire disponibles dans la classe Java ZoneId
L'histoire de l'écriture de Java dans Emacs
Augmenter dynamiquement le nombre d'éléments dans un tableau bidimensionnel Java (tableau multidimensionnel)
L'histoire de la comparaison de chaînes de bas niveau en Java
[Java] Gestion des Java Beans dans la chaîne de méthodes
À propos de l'idée des classes anonymes en Java
L'histoire de l'apprentissage de Java dans la première programmation
Mesurer la taille d'un dossier avec Java
Ressentez le passage du temps même à Java
Un examen rapide de Java appris en classe
Importer des fichiers de la même hiérarchie en Java
Première touche de la classe Files (ou Java 8)
[Java] Où est la classe d'implémentation de l'annotation qui existe dans BeanValidation?
Obtenez l'URL de la destination de la redirection HTTP en Java
[Java] Trier ArrayList avec des éléments de votre propre classe
Un examen rapide de Java appris en classe part4
[Ruby] Le rôle des indices dans l'apprentissage des éléments dans les tableaux
Obtenez le nom du scénario de test dans la classe de test JUnit
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Un examen rapide de Java appris en classe part3
Un examen rapide de Java appris en classe part2
Modifier la qualité de stockage des images JPEG en Java
Utilisation correcte de la classe abstraite et de l'interface en Java
[Java] Comparateur de la classe Collection
Résumé de la classe Java Math
Implémentation Java de tri-tree
Comment obtenir le nom d'une classe / méthode exécutée en Java
A été effectué dans l'année de base de la semaine calendaire Java
[Note] Sortie Java de la somme des éléments pairs et impairs
Une explication rapide des cinq types de statique Java
J'ai essayé de résumer les bases de kotlin et java
[Java] Essayez de modifier les éléments de la chaîne Json à l'aide de la bibliothèque
Comptez le nombre de chiffres après la virgule décimale en Java
Comment dériver le dernier jour du mois en Java
[Java] Obtenez des informations sur la date 10 jours plus tard en utilisant la milliseconde dans la classe Date
Devinez le code de caractère en Java
Examiner les informations système de l'environnement d'exploitation AWS Lambda en Java
Diverses méthodes de la classe Java String
[Java] Obtenez les dates des derniers lundi et dimanche dans l'ordre
[Édition Java] Histoire de la sérialisation
Spécifiez l'emplacement Java dans eclipse.ini
Sortie de la différence entre chaque champ de deux objets en Java
Gérer la logique métier pour un ensemble d'entités dans une classe Java
Décompressez le fichier zip en Java
Utilisation de base de Java Facultatif Partie 1
Classe StringBuffer et StringBuilder en Java
Mécanisme et caractéristiques de la classe d'implémentation Collection souvent utilisés en Java
Diverses méthodes de la classe String
Liste des membres ajoutés dans Java 9
La milliseconde définie dans /lib/calendars.properties de Java jre est UTC
Obtenez l'URL publique du fichier privé de Flickr en Java
Lire les 4 premiers octets du fichier de classe Java et générer CAFEBABE
Pensez aux 7 règles d'Optionnel
Créons une application TODO en Java 5 Changer l'affichage de TODO
Liste des types ajoutés dans Java 9