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. ~~
~~ En Java8, utilisez l'instruction `while
! !! ~~
Après tout, c'est amusant d'utiliser `` StreamAPI ''! !!
À 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