Stream

Adriano10

Bekanntes Mitglied
Java:
public class StreamTest {

    public static void main(String[] args) {
        

        Stream<Integer> stream = Stream.iterate(1, n -> 1 + n);       
        System.out.println(stream.peek(i -> System.out.println(i + " ")).toArray());

        
        

    }

}

Ich kenne mich mit Stream leider nicht so gut aus. hier habe ich einen unendlichen Stream<Integer> erzeugt, der die natürlichen Zahen in der Reihenfolge (0 1 2 3 .....) enthält...

jetzt wollte ich einen unendlichen Stream<Integer> erzeugen, der die natürlichen Zahen in dieser Reihenfolge (0 1 -1 2 -2 3 -3 .....) enthält.

wie soll man bei diesem Fall mit Stream umgehen, um gewünschtes Ergebnis hinzukriegen?

Ich wäre sehr dankbar für jede Hilfe.
 

httpdigest

Top Contributor
Finde einen arithmetischen Ausdruck (bzw. eine mathematische Funktion), der/die aus 0, 1, 2, 3, 4, 5, 6, ... jeweils 0, 1, -1, 2, -2, 3, -3, ... macht. Hier könnten die Grundrechenarten (+, -, *, /) und der Restoperator (%) nützlich sein.
 

Adriano10

Bekanntes Mitglied
Finde einen arithmetischen Ausdruck (bzw. eine mathematische Funktion), der/die aus 0, 1, 2, 3, 4, 5, 6, ... jeweils 0, 1, -1, 2, -2, 3, -3, ... macht. Hier könnten die Grundrechenarten (+, -, *, /) und der Restoperator (%) nützlich sein.
Trotz vieler Versuche komme ich leider nicht drauf. Wenn Sie mir das zeigen können, wäre ich sehr dankbar
 

mihe7

Top Contributor
Trotz vieler Versuche komme ich leider nicht drauf. Wenn Sie mir das zeigen können, wäre ich sehr dankbar
Mal ganz ausführlich, wie man sich dem Spaß annähern kann. Dazu schaut man sich z. B. erstmal die Werte genau an:

xf(x)
00
11
2-1
32
4-2
53
6-3

In dieser Darstellung erkennt man zwei Dinge:
  1. Jedes gerade x>0 wird auf einen negativen, jedes ungerade x auf einen positiven Wert abgebildet
  2. Der Betrag von f(x) entspricht der ganzzahligen Division von (x+1) durch 2.
Das muss man jetzt nur zusammenbringen.

Zu 1.: addiert man das Doppelte des Rests der Division von x durch 2 zu -1, erhält man offensichtlich direkt den gewünschten Faktor. Das kann man sich wieder in einer Tabelle verdeutlichen:

xx/2 (ganzzahlig)RestFaktor (-1 + 2*Rest)
000-1 + 2*0 = -1
101-1 + 2*1 = 1
210-1 + 2*0 = -1 (wie oben, da Rest = 0)
311-1 + 2*1 = 1 (wie oben, da Rest = 1)
420-1
5211
630-1

Zu 2.: das ist einfach (x+1)/2.

Aus 1 und 2 ergibt sich also: f(x) = Faktor * (x+1)/2. Mit Faktor = (-1 + 2*Rest) folgt f(x) = (-1 + 2*Rest)*(x+1)/2. Den Rest kann man wieder einsetzen, denn Rest = (x % 2), so dass sich insgesamt f(x) = (-1 + 2*(x % 2))*(x+1)/2 ergibt.

EDIT: das ist natürlich nur eine Möglichkeit. Man kann z. B. den Faktor auch über eine Potenz von -1 ermitteln.
 

JennyL

Bekanntes Mitglied
Java:
	public static Iterator<Integer> getInfStream() {
		return Stream.iterate(1, x -> x + 1).map(x -> x % 2 == 0 ? (x / 2) : -(x / 2)).iterator();
	}

	public static void main(String[] args) {
		Iterator<Integer> infStream = getInfStream();
		System.out.println(IntStream.range(0, 6).map(x -> infStream.next()).mapToObj(Objects::toString)
				.collect(Collectors.joining(", ")));
	}
 

M.L.

Top Contributor
Oder noch eine Option: man lässt zwei Streams ablaufen, einer mit positiven Zahlen, der andere mit negativen Zahlen:
Code:
 ...Stream<Integer> stream = Stream.iterate(0, n -> n - 1); ...
In der Endausgabe an den geraden Indizes die negativen Zahlen ausgeben, an den ungeraden die positiven.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
W Stream und LocalDate Java Basics - Anfänger-Themen 15
M Stream mit den ersten n natürlichen Zahlen Java Basics - Anfänger-Themen 4
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
K Erste Schritte Stream-Aufruf vereinfachen Java Basics - Anfänger-Themen 3
I Datei als Stream aus Ressource laden? Java Basics - Anfänger-Themen 2
O Alternative zu Stream.forEach() Java Basics - Anfänger-Themen 6
Dimax stream in string[] speichern Java Basics - Anfänger-Themen 6
S Java Stream API Java Basics - Anfänger-Themen 6
N String N-Gramme mit Stream erstellen Java Basics - Anfänger-Themen 7
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
J Gefilterten Stream über die Konsole ausgeben Java Basics - Anfänger-Themen 1
J Count und Copy in Stream<Path> Java Basics - Anfänger-Themen 11
W for Schleife in allgemeingültiges Konstrukt aus Stream und Lambdas Java Basics - Anfänger-Themen 6
W Stream Array List - Frage Java Basics - Anfänger-Themen 5
G refactoring mit stream Java Basics - Anfänger-Themen 27
P Java Verketten von Stream - Bedeutung der Anweisungen? Java Basics - Anfänger-Themen 3
nightsky_ Methoden (Stream) Collectors.toMap() Java Basics - Anfänger-Themen 2
W HTTP-Stream auf Ajax umbauen Java Basics - Anfänger-Themen 7
elischa Client-Server IO und Stream Steuerung ? Java Basics - Anfänger-Themen 2
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
M Panel erstellen, welches ein Control erhält. Ausgabe soll über einen Stream erfolgen. Java Basics - Anfänger-Themen 0
E Stream closed - Obwohl nicht manuell geschlossen! Java Basics - Anfänger-Themen 0
N Java.io.ioexception: Stream closed Java Basics - Anfänger-Themen 2
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
S Input/Output nullpointerException beim schliessen von stream Java Basics - Anfänger-Themen 3
A Integer aus Stream to Double Java Basics - Anfänger-Themen 7
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
M Java Stream?! Java Basics - Anfänger-Themen 8
S Input/Output Data-Input/Output-Stream Java Basics - Anfänger-Themen 2
V Jar-Datei von Byte-Array oder Stream laden? Java Basics - Anfänger-Themen 9
J Input/Output Auf effiziente Weise einen Stream auszulesen Java Basics - Anfänger-Themen 5
M Stream close Java Basics - Anfänger-Themen 6
A Prüfen ob Datei geöffnet ist bzw Stream finden Java Basics - Anfänger-Themen 2
H exception "java.io.IOException: Stream closed" Java Basics - Anfänger-Themen 10
Burny91 File.delete(file) geht nicht-Offener Stream aber WO? Java Basics - Anfänger-Themen 4
M Audio Stream läuft auf :connection abort: socket write error Java Basics - Anfänger-Themen 2
H Fehler-Stream grafisch umsetzen Java Basics - Anfänger-Themen 4
H Datentypen Byte-Array aus Stream lesen Java Basics - Anfänger-Themen 3
S Fehler beim Speichern von MP3-Stream Java Basics - Anfänger-Themen 6
bambi0815 Text Datei Stream to Char[][] Java Basics - Anfänger-Themen 7
D JSP: IOException: Stream closed nach dispatchter.forward(..) Java Basics - Anfänger-Themen 13
G Warum bei Stream close() aufrufen. Java Basics - Anfänger-Themen 12
G NoClassDefFoundError: javax/xml/stream/XMLStreamException Java Basics - Anfänger-Themen 23
P Stream Java Basics - Anfänger-Themen 4
alexpetri javax.xml.stream.* nicht gefunden Java Basics - Anfänger-Themen 3
M Stream unvollständig Java Basics - Anfänger-Themen 5
Zed Stream in Variable speichern. Java Basics - Anfänger-Themen 3
M Input/Output Stream aus einem String Java Basics - Anfänger-Themen 2
S Schreib Stream Java Basics - Anfänger-Themen 21
M Stream in String umwandeln Java Basics - Anfänger-Themen 5
K datei komplett als Stream oder ähnliches Java Basics - Anfänger-Themen 4
A Serialisierbarer Stream? - File per RMI versenden Java Basics - Anfänger-Themen 4
R Binary Stream in Bild umwandeln Java Basics - Anfänger-Themen 5
C Position im Objekt-Stream Java Basics - Anfänger-Themen 2
M Ausgabe in String anstatt auf Stream Java Basics - Anfänger-Themen 17
C Stream-Konzept Java Basics - Anfänger-Themen 2
A von Socket-Stream lesen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben