Je voulais écrire un processus équivalent à une instruction while avec l'API Java 8 Stream

Par exemple, si vous voulez avancer la date de 5 jours à partir d'une certaine date de début ( startYmd```) et trouver la date à laquelle elle dépasse Aujourd'hui.

LocalDate ymd; //Date de début

while (ymd.isBefore(LocalDate.now())) {
    ymd = ymd.plusDays(5);
}

System.out.println(ymd); //Le premier jour après Aujourd'hui, 5 jours à compter de la date de début

J'écris.

D'une manière ou d'une autre, j'ai récemment pensé que je ne devais pas écrire while statement '', alors j'ai décidé de l'écrire avec `` StreamAPI '' ``. Oh, c'est Java 8 après avoir su que Java 9 a `` Stream # takeWhile ``.

Donc, ce code a été créé.

LocalDate startYmd; //Date de début

Stream.iterate(startYmd, ymd -> ymd.plusDays(5))
    .filter(ymd -> !ymd.isBefore(LocalDate.now()))
//    .sorted()← Boucle infinie avec ça! !!
    .findFirst()
    .ifPresent(ymd -> {
        System.out.println(ymd); //Le premier jour après Aujourd'hui, 5 jours à compter de la date de début
    });

Cela fait longtemps que je n'ai pas reçu le commentaire, mais je l'ai corrigé. Il semble que l'opération intermédiaire avec état sort () '' était la cause de la boucle infinie, et à cette époque, il y avait beaucoup de manque d'étude ... (À propos, l'évaluation de filtre () '' était aussi le contraire ... orz)

~~ Oui. C'est une boucle infinie. ~~ ~~ Infinite Stream VS Stream # filter '' `` J'étais stupide quand j'ai défié la bataille imprudente. ~~

~~ En essayant d'éviter une boucle infinie ~~

LocalDate startYmd; //Date de début

Stream.iterate(startYmd, ymd -> ymd.plusDays(5))
    .limit(ChronoUnit.DAYS.between(startYmd, LocalDate.now())) // ÷5+1 va bien...
    .filter(ymd -> ymd.isBefore(LocalDate.now()))
    .sorted()
    .findFirst()
    .ifPresent(ymd -> {
        System.out.println(ymd); //Le premier jour après Aujourd'hui, 5 jours à compter de la date de début
    });

C'est comme ~~, quel est le but initial? Ce sera un code. ~~

Conclusion

~~ En Java8, utilisez l'instruction `while! !! ~~ Après tout, c'est amusant d'utiliser `` StreamAPI ''! !!

Serpentin

À propos, il existe une bibliothèque qui réalise le mouvement Stream # takeWhile '', vous pouvez donc l'utiliser, ou vous pouvez créer une classe `` `` TakeWhile '' pour le faire se comporter de la même manière, vous avez donc la liberté. Est-il acceptable de l'essayer en développement élevé?

Recommended Posts

Je voulais écrire un processus équivalent à une instruction while avec l'API Java 8 Stream
Je veux écrire une boucle qui fait référence à un index avec l'API Stream de Java 8
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Une histoire à laquelle j'étais accro à deux reprises avec le paramètre de démarrage automatique de Tomcat 8 sur CentOS 8
J'ai créé un programme qui recherche la classe cible à partir du processus surchargé avec Java
J'ai essayé de créer un outil de comparaison des prix des produits Amazon dans le monde entier avec Java, l'API Amazon Product Advertising, l'API Currency (29/01/2017)
[java8] Pour comprendre l'API Stream
L'histoire que je voulais développer Zip
[Java] Traitement de la situation où le programme qui écrit dans le flux de sortie du processus ne se termine pas même si waitFor
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
Une histoire qui a eu du mal avec l'introduction de Web Apple Pay
Une histoire que j'ai finalement comprise Java pour une déclaration en tant que non-ingénieur
Comment gérer le type auquel j'ai pensé en écrivant un programme Java pendant 2 ans
J'ai essayé de résumer l'API Stream
L'histoire de la création d'un lanceur de jeu avec une fonction de chargement automatique [Java]
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
J'ai essayé de créer une API Web qui se connecte à DB avec Quarkus
Comment convertir un tableau de chaînes en un tableau d'objets avec l'API Stream
Après tout, je voulais prévisualiser le contenu de mysql avec Docker ...
[Kotlin] Je voulais générer un png avec une grande capacité par zone [Java]
J'ai essayé de résoudre 10 questions précédentes sélectionnées qui devraient être résolues après l'inscription à AtCoder avec Java, API Stream
J'ai essayé d'implémenter une fonction équivalente à Felica Lite avec HCE-F d'Android
Ce que j'ai essayé quand je voulais obtenir tous les champs d'un haricot
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai essayé de créer une méthode qui applique plusieurs filtres à la fois avec l'API Java Stream. Cela vous convient-il?
Quand j'ai voulu créer une méthode pour Premium Friday, c'était déjà dans l'API standard Java 8
[Petite histoire] J'ai essayé de rendre java ArrayList un peu plus pratique
J'ai essayé de casser le bloc avec java (1)
J'ai écrit un code de test (Junit & mockit) pour le code qui appelle l'API AWS (Java)
Ecrire un test en mettant en œuvre l'histoire de M. Nabeats dans le monde avec du rubis
Implémentons une fonction pour limiter le nombre d'accès à l'API avec SpringBoot + Redis
J'ai essayé ce que je voulais essayer avec Stream doucement.
Comment écrire Scala du point de vue de Java
Utiliser des expressions Java lambda en dehors de l'API Stream
L'histoire de la création d'un proxy inverse avec ProxyServlet
Java: utilisez Stream pour trier le contenu d'une collection
L'histoire de la création de DTO, semblable à Dao avec Java, SQLite
Java: Une histoire qui m'a mis mal à l'aise quand on m'a appris à comparer des chaînes avec des égaux sans raison.
Une note gênante lorsque vous essayez d'utiliser nginx avec des conteneurs distants de vscode
L'histoire de la création d'une version Java du serveur Minecraft avec GCP (et également de la création d'une liste blanche)
Implémentation d'une API forte pour "Je veux afficher ~~ à l'écran" avec un simple CQRS
[Java] J'ai essayé de créer un jeu Janken que les débutants peuvent exécuter sur la console
Je veux renvoyer un type différent de l'élément d'entrée avec Java8 StreamAPI Reduce ()
Une histoire que j'ai réalisé que je devais étudier en premier lieu en tant qu'ingénieur
J'ai essayé de créer un programme en Java qui résout le problème du voyageur de commerce avec un algorithme génétique
Une histoire dans laquelle j'étais accro à la conversion de type implicite d'ActiveRecord lors du test unitaire
[Java] Modifier le traitement en fonction de la situation avec le modèle de stratégie
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
Histoire de créer une application de gestion de tâches avec Swing, Java
J'ai essayé de moderniser une application Java EE avec OpenShift.
J'ai essayé de résumer les bases de kotlin et java
20190803_Java & k8s sur Azure L'histoire d'aller au festival
Une histoire remplie des bases de Spring Boot (résolu)
Je veux faire une liste avec kotlin et java!
Je voulais juste créer une propriété réactive en Java
Je veux créer une fonction avec kotlin et java!
Je souhaite utiliser l'API Java 8 DateTime lentement (maintenant)
Une histoire à laquelle j'étais accro avec toString () d'Interface qui était proxy avec JdkDynamicAopProxy
Ce à quoi j'étais accro avec l'API REST Redmine