[JAVA] FizzBuzz mit Stream ausgeben

Einführung

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.

Versuchen

Wie auch immer, generieren Sie von 1 bis 100

IntStream.range(1,101);

Der Grund für die Reichweite, nicht für rangeClosed, waren Funktionscodes. (Endlich nicht so kurz)

Erstellen Sie FizzBuzz mit mapToObj

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.

  1. In FizzBuzz konvertieren, wenn durch 3 oder 5 teilbar
  2. In Fizz konvertieren, wenn durch 3 teilbar 3.5 In Buzz konvertieren, wenn durch 5 teilbar
  3. Wie es ist

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.

Versuchen Sie zu verkürzen

Derzeit sind es 129 Bytes, aber es kann ein wenig gekürzt werden.

Verwenden Sie die Methodenreferenz

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

Schreibe == mit>

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 **

Zusammenfassung

Stream Spaß

Nachtrag

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

FizzBuzz mit Stream ausgeben
Ausgabe neunundneunzig mit Stream
Ausgabe einer CSV-Datei mit offener CSV
Steuerprotokollausgabe mit Doma2
Ausgabe "Izumi Oishi" mit Dokojava
Excel mit Formeln mit XlsMapper ausgeben
Ausgabezeichen wie Konversation mit JavaFX
Ausgabe Testabdeckung mit Klee + Gradle
[Java] Elementexistenzprüfung mit Stream
PDF und TIFF mit Java 8 ausgeben
Java8-Listenkonvertierung mit Stream Map
Systemzeit mit Maven an MANIFEST.MF ausgeben
Implementieren Sie die Bildeingabe / -ausgabe mit Spring MVC