Hallo. Es ist Kecho. ** Benutzt ihr Stream? ** ** ** Ich habe vor ein paar Tagen gelernt und bin wirklich begeistert. Ich spiele während der Arbeit damit herum. Dieses Mal werde ich FizzBuzz mit Stream ausgeben.
IntStream.range(1,101);
Der Grund für die Reichweite, nicht für rangeClosed, waren Funktionscodes. (Endlich nicht so kurz)
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));
Ja, es ist schwer zu schreiben, und ich bin sicher, jeder ist schwer.
i->i%3==0&&i%5==0?"FizzBuzz":i%3==0?"Fizz":i%5==0?"Buzz":i
In diesem Teil ist FizzBuzz implementiert. Es wird mit dem Binäroperator in der folgenden Reihenfolge in eine Zeichenfolge konvertiert.
Ausgabeergebnis
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
・ ・ ・
Das ist gut.
Derzeit sind es 129 Bytes, aber es kann ein wenig gekürzt werden.
Sie können das Argument weglassen, indem Sie eine Methodenreferenz verwenden.
i->System.out.println(i)System.out::Es kann als println geschrieben werden.
```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);
Das sind 124 Bytes
Das ist ein Zeichen kürzer.
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);
Das sind 120 Bytes. ** Wir suchen nach Möglichkeiten, es noch kürzer zu machen **
Stream Spaß
Er schrieb einen kürzeren Code in den Kommentaren.
IntStream.range(1,101).forEach(i->System.out.println((i%3<1?"Fizz":"")+(i%5<1?"Buzz":i%3<1?"":i)));
Entfernt die Zeichenfolgenredundanz in FizzBuzz. Ausgabe wie sie ist ohne Verwendung von mapToObj. Was für ein 100 Byte!
Recommended Posts