Input/Output Wie prüfen ob Stream1 in Stream2 enthalten ist (on-the-fly) ?

Screen

Bekanntes Mitglied
Hallo Leute,

ich habe Probleme beim Finden eines Lösungsansatzes für das folgende Problem:

Wie prüft man on-the-fly ob Stream1 in Stream2 enthalten ist?

Die Elemente in den beiden Strömen sind aufsteigend sortiert.
Es werden also zwei Ströme unabhängig von einander empfangen und man will schauen ob der Stream1 in seinem aktuellen Zustand in dem aktuellen Zustand des Stream2 vorhanden ist.

Methodenkopf:

public static boolean linearIn (final Stream1, final Stream2) {}

Bsp.:

Stream1 : 2 3 4
Stream2 : 1 2 3 4 5 6

z.B. Ausgabe= false , false ,false , true ( da 2 3 4 in 1 2 3 4 5 6 enthalten ist)

Hat jemand eine Idee?
 
Inhalt der Streams jeweils in ein Array einlesen , diese dann vergleichen ?

Meinst du mit on the fly ohne zwischenspeichern ? ich bezweifel das dies funktioniert.
 
Zuletzt bearbeitet:
Inhalt der Streams jeweils in ein Array einlesen , diese dann vergleichen ?

Meinst du mit on the fly ohne zwischenspeichern ? ich bezweifel das dies funktioniert.

Man darf halt nicht abwarten bis der Stream zu Ende ist, sondern im aktuellen Zustand abfragen und ausgeben ob enthalten oder nicht. D.h. nicht vollständig in einen Array einlesen und dann am Ende vergleichen.

z.B.

Streams open()

Stream1: 2
Stream2: 1

Ausgabe: false

nächster Zustand:

Stream1: 2 3
Stream2: 1 2 3

Ausgabe: true

Stream2: 2 3 4
Stream2: 1 2 3 6

Ausgabe: false

Streams close()

D.h. on the fly.
 
Was ist für dich denn ein Zustand?

Ein Stream ist für mich ein Datenstrom beliebiger Länge. Wenn du davon zwei hast und nachsehen willst ob einer in dem anderen vorhanden ist kann das nur gehen, wenn zumindest der kürzere der beiden komplett eingelesen ist. Alles andere ist mathematisch unmöglich.

Gruss

Claus
 
Was ist für dich denn ein Zustand?

Ein Stream ist für mich ein Datenstrom beliebiger Länge. Wenn du davon zwei hast und nachsehen willst ob einer in dem anderen vorhanden ist kann das nur gehen, wenn zumindest der kürzere der beiden komplett eingelesen ist. Alles andere ist mathematisch unmöglich.

Gruss

Claus

Es scheint doch möglich zu sein:

Zitat: "Da Datenströme unendlich lang sein können, ist es im Allgemeinen nicht möglich diese vollständig aufzuzeichnen und erst dann zu verarbeiten, wenn diese Kopie vorliegt. Daher sollen Sie on-the-fly arbeiten, d.h. jedes gelesene Element muss direkt verarbeitet werden."

Also es ist nicht möglich die beiden Streams "fertig aufzuzeichnen" und dann zu prüfen. Wie geht es dann?
 
Du must schon genauer erklären was deine Streams denn enthalten. Wenn sie aus einzelnen Elementen bestehen, dann kannst du natürlich die Elemente auch einzeln bearbeiten. Du kannst aber nicht feststellen ob ein Element aus Stream 1 irgendwo in Stream 2 vorkommt, solange Stream 2 nicht komplett gelesen ist. Das ist doch wohl logisch oder?

Gruß

Claus
 

Neue Themen


Zurück
Oben