Bonjour. C'est Kecho. ** Utilisez-vous stream? ** ** J'ai appris il y a quelques jours et je suis vraiment dedans. Je joue avec pendant le travail. Cette fois, je sortirai FizzBuzz en utilisant stream.
IntStream.range(1,101);
La raison de la plage, et non de la plage fermée, était consciente des codes courts. (Enfin pas si court)
IntStream.range(1,101).mapToObj(i->i%3==0&&i%5==0?"FizzBuzz":i%3==0?"Fizz":i%5==0?"Buzz":i).forEach(i->System.out.println(i));
Oui, c'est difficile à écrire, et je suis sûr que tout le monde est dur.
i->i%3==0&&i%5==0?"FizzBuzz":i%3==0?"Fizz":i%5==0?"Buzz":i
FizzBuzz est implémenté dans cette partie. Il est converti en chaîne de caractères dans l'ordre suivant avec l'opérateur binaire.
Résultat de sortie
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
・ ・ ・
C'est bon.
Actuellement, il est de 129 octets, mais il peut être un peu raccourci.
Vous pouvez omettre l'argument à l'aide d'une référence de méthode.
i->System.out.println(i)Système.out::Il peut être écrit comme println.
```java
IntStream.range(1,101).mapToObj(i->(i%3==0&&i%5==0)?"FizzBuzz":i%3==0?"Fizz":i%5==0?"Buzz":i).forEach(System.out::println);
C'est 124 octets
C'est un caractère plus court.
IntStream.range(1,101).mapToObj(i->(i%3>0&&i%5>0)?i:i%3>0?"Buzz":i%5>0?"Fizz":"FizzBuzz").forEach(System.out::println);
C'est 120 octets. ** Nous recherchons des moyens de le rendre encore plus court **
stream amusant
Il a écrit un code plus court dans la section commentaires.
IntStream.range(1,101).forEach(i->System.out.println((i%3<1?"Fizz":"")+(i%5<1?"Buzz":i%3<1?"":i)));
Supprime la redondance des chaînes dans FizzBuzz. Sortie telle quelle sans utiliser mapToObj. Quel 100 octets !!
Recommended Posts