[JAVA] Il est maintenant temps de commencer avec l'API Stream

J'ai participé au JJUG CCC 2018 Fall. J'ai personnellement résumé le contenu de la conférence # ccc_g4 de @ skrb.

Qu'est-ce que Stream?

** Stream est un itérateur simple **

Position debout de style Lambda

Mohamed Ali danse comme un papillon et poignarde comme un bol C'est une expression lambda qui s'écrit comme une fonction et se comporte comme une classe.

 Fonction <============ Lambda expression ============> Classe
 Traitement: décrit comme une fonction, état + traitement
 Se comporter comme une classe

Pourquoi ne comprenez-vous pas Stream?

Beaucoup de gens qui l'ont essayé une fois mais n'ont pas compris

S'il y a une nouvelle technologie ...

Exemple: pour faire une omelette, la dénaturation thermique de la protéine est de 60 degrés, et il y a une réaction mailerd ... Même si vous le savez, vous pouvez y arriver sans vous en soucier, non? ??

** Parce que c'est un nouveau concept, habituez-vous-y plutôt que de l'apprendre. Vous n'avez qu'à comprendre le mécanisme après avoir commencé à appeler. ** **

Stream = flux de données

Je pense qu'il est traité et traité plutôt qu'une boucle. Je ne veux pas créer une classe pour la traiter. → Expression Lambda Comment décrire le traitement qui détermine uniquement les arguments et les valeurs de retour

 (Argument) -> {
	toDO
	return val;
}

Qu'est-ce que Stream après tout

** Réassemblez ce que vous voulez faire du point de vue du traitement des données. Simplifiez le processus et divisez-le en 1 processus-> 4 processus simples-> Enfin encadré avec toList () etc. Il est bon de commencer par pour chacun et d'essayer progressivement map-> filter etc. **

Formule lambda couramment utilisée

Fonction <T, R> avec 1 valeur de retour d'argument 1 argument de valeur de retour booléen Predicate 1 Argument Aucune valeur de retour Consumer Fournisseur sans argument ni valeur de retour

Écriture de base

 // Mec basique
(String s) -> { return s.length();
 // Le type est facultatif
(s) -> { return s.length();
 // le retour peut être omis pour une ligne
(s) -> s.length();
 // () peut être omis s'il s'agit d'un argument
s -> s.length();

L'IDE le fera pour vous même si vous ne vous en souvenez pas.

Modèles dont vous devriez au moins vous souvenir

Exemple: Extrayez les mots commençant par un a inférieur dans la liste.

example.java


List<String> words = new ArrayList<>() {
    {
        add("apple");
        add("toast");
        add("about");
        add("sun");
    }
};
var results = words.stream()
    .map(word -> word.toLowerCase())
    .filter(word -> word.startsWith("a"))
    .collect(Collectors.toList());
System.out.println(results);

Stream est nul garanti, vous n'avez donc pas à faire un nouveau ArrayList () pour un tableau de sorties. Il y en a que vous ne pouvez pas jouer avec Stream, alors n'en faites pas trop.

Q&A Q1. Je pense que la section de traitement de conversion peut faire référence à la méthode. A1. Vous pouvez écrire. Cependant, ce n'est pas très préférable car il n'est pas convivial pour le lecteur. Q2. L'exception ne fonctionne pas. Existe-t-il une meilleure pratique R2. Il n'y a pas de réponse correcte. Utilisez soit

Supplément

La personne elle-même a déjà publié le Matériel de présentation, donc cet article est pour référence seulement.

Recommended Posts

Il est maintenant temps de commencer avec l'API Stream
Premiers pas avec Doma - Introduction à l'API Criteria
Comment démarrer avec Slim
[java8] Pour comprendre l'API Stream
Java 8 ~ Stream API ~ pour commencer maintenant
[DDD] Quelle est l'architecture la plus accessible pour démarrer avec la conception pilotée par domaine?
J'ai essayé de démarrer avec Web Assembly
[Note] Comment démarrer avec Rspec
Java 8 pour démarrer maintenant ~ API de date et d'heure ~
J'ai essayé de résumer l'API Stream
Comment convertir un tableau de chaînes en un tableau d'objets avec l'API Stream
Premiers pas avec Doma-Using Projection avec l'API Criteira
Premiers pas avec les sous-requêtes utilisant Doma avec l'API Criteria
Comment démarrer avec Eclipse Micro Profile
Essayez d'obtenir la clé API de redmine avec ruby
Les débutants de Rails ont essayé de se lancer avec RSpec
Commencez avec Gradle
Présentation de «Introduction à la programmation pratique de la rouille» (jour 3)
Commencez avec Java sans serveur avec le framework léger Micronaut!
Premiers pas avec Doma-Dynamic Construction de clauses WHERE avec l'API Criteria
Premiers pas avec Reactive Streams et l'API JDK 9 Flow
Démarrez avec Spring Boot
Comment obtenir des valeurs en temps réel avec TextWatcher (Android)
Je souhaite utiliser l'API Java 8 DateTime lentement (maintenant)
[Java] [Play Framework] Jusqu'à ce que le projet soit démarré avec Gradle
Accédez à l'API Web avec Get sur Android et traitez Json (Java pour le moment)
Ce à quoi j'étais accro avec l'API REST Redmine
[Java] Introduction à l'API Stream
L'heure ne va pas avec l'application lancée sur le conteneur Docker
Comment démarrer avec JDBC en utilisant PostgresSQL sur MacOS
J'ai essayé de démarrer avec Swagger en utilisant Spring Boot
Convertir un tableau bidimensionnel au format csv avec l'API Java 8 Stream
Comment obtenir le dernier ID de diffusion en direct pour une chaîne sans utiliser l'API de données YouTube
Lorsque l'accès demandé à la ressource est refusé lors de la transmission avec Docker
Revue de code facile pour démarrer avec Jenkins / SonarQube: analyse statique
Revenir au début, démarrer avec Java ② Instructions de contrôle, instructions de boucle
Le concept de conception de l'API de date et d'heure de Java est intéressant
Commençons par la programmation parallèle
[Introduction à Java] À propos de l'API Stream
Mémo à obtenir avec Struts2 + Ajax
[IOS] Que faire lorsque l'image est remplie d'une seule couleur
Obtenez le type d'un élément d'un tableau pour déterminer s'il s'agit d'un tableau
Présentation de «Introduction à la programmation pratique de Rust» (jour 4) Appel de Rust depuis Ruby
Développement Android-Accès WEB (GET) Essayez d'obtenir des données en communiquant avec l'extérieur. ~
[Rails] Comment obtenir les informations sur l'utilisateur actuellement connecté avec devise
Si la méthode HTTP n'est pas spécifiée, le côté navigateur demande avec GET
Comment comparer uniquement le temps avec Rails (de quelle heure à quelle heure, quelque chose comme)
À vous à qui on a dit "Ne pas utiliser Stream API" dans le champ
Java8 / 9 Beginners: Streaming API addiction points et comment les gérer
Premiers pas avec Doma-Criteria API Cheet Sheet
Sortie de l'heure système sur MANIFEST.MF avec Maven
Introduction à Java pour la première fois # 2
Essayez d'utiliser l'API Stream en Java