Einzelne Werte aus einem Array vergleichen?

Fabse

Aktives Mitglied
Hi,

ich habe folgende 2 2D Arrays:

Code:
a                                             b

0 0 0 1 0 0                  ||           0 0 1 1 0 0 
0 0 1 1 0 0                  ||           0 1 1 1 1 0
0 1 0 1 0 0                  ||           0 1 0 1 0 0
0 0 0 1 0 0                  ||           0 0 0 1 1 0
0 0 0 1 0 0                  ||           0 0 0 1 1 0
0 0 0 1 0 0                  ||           0 1 0 1 1 0 
0 0 0 1 0 0                  ||           0 0 0 1 0 0
0 0 0 1 0 0                  ||           0 0 0 1 0 0

Jetzt möchte ich prüfen, ob in Array b überall eine 1 steht, wo auch in array a eine 1 steht. Das im array b an einigen Stellen eine 1 anstatt einer 0 steht ist uninteressant!! Die arrays sind "gleich" wenn sich alle "1en" aus dem a Array auch in dem b Array wiederfinden.

Muss ich mir jetzt echt alle Positionen des a Arrays wo eine 1 steht ausgeben lassen und diese Positionen dann mit dem b array vergleichen? Oder gehts auch einfacher? ArrayList? :bahnhof:

Danke :)
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Im SE-API gibt es die Klasse
Code:
Arrays
mit diversen Hilfsmethoden.
Code:
Arrays.equals
für Vergleiche eindimensionaler Arrays und
Code:
Arrays.deepEquals
für vergleiche mehrdimensionaler Arrays. Doku gibts hier: Arrays (Java Platform SE 7 )
[EDIT]Oh Mist, habe den Zusatz mit den Nullen nicht gelesen. Warte, muss nachdenken...[/EDIT]
[EDIT]Habe mir grad den Quellcode von equals und deepEquals angesehen. Da wird auch schlicht durchiteriert. Einfacher geht es wohl nicht.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

X5-599

Top Contributor
Hi,

ich habe folgende 2 2D Arrays:

Code:
a                                             b

0 0 0 1 0 0                  ||           0 0 1 1 0 0 
0 0 1 1 0 0                  ||           0 1 1 1 1 0
0 1 0 1 0 0                  ||           0 1 0 1 0 0
0 0 0 1 0 0                  ||           0 0 0 1 1 0
0 0 0 1 0 0                  ||           0 0 0 1 1 0
0 0 0 1 0 0                  ||           0 1 0 1 1 0 
0 0 0 1 0 0                  ||           0 0 0 1 0 0
0 0 0 1 0 0                  ||           0 0 0 1 0 0

Jetzt möchte ich prüfen, ob in Array b überall eine 1 steht, wo auch in array a eine 1 steht. Das im array b an einigen Stellen eine 1 anstatt einer 0 steht ist uninteressant!! Die arrays sind "gleich" wenn sich alle "1en" aus dem a Array auch in dem b Array wiederfinden.

Muss ich mir jetzt echt alle Positionen des a Arrays wo eine 1 steht ausgeben lassen und diese Positionen dann mit dem b array vergleichen? Oder gehts auch einfacher? ArrayList? :bahnhof:

Danke :)


Du könntest für jede "Zeile" des ArrayA eine dezimal Zahl in ein neues Array speichern. Das machst du genauso für das ArrayB. Aber anstatt diese Zahl in ein Array zu speichern, &-Verknüpfst du sie mit der Zahl aus dem neuen Array (für die aktuelle Zeile). Dieses Ergebnis muss gleich der Zahl aus dem neuen Array sein. Wenn nicht kannst du die Schleife abbrechen und sagen: Die ArraysA/B sind nicht gleich.


Schwer zu beschreiben in Textform. Grundansatz ist: Eine binäre UND-Verknüpfung der einzelnen "Zeilen" der ArraysA/B.
Java:
if((zeileB & zeileA) != zeileA)
    arraysAreEqual = false;
Weiss einer ne bessere Möglichkeit?
 

Fabse

Aktives Mitglied
@X5 ich glaub das ist aber logisch falsch die Idee, wenn ich sie richtig verstanden habe!?

Die Beispiel Arrays sind schon "gleich", weil alle 1en aus dem A array in dem B Array vorkommen.

Meine Idee wäre jetzt:

Ich geh durch das A Array, überall da wo eine 1 steht überprüfe ich sofort ob an der gleichen Stelle in Array B auch eine 1 steht, wenn ja gehts weiter bis das array fertig ist, wenn nein, sind die arrays nicht gleich und es wird abgebrochen.
 

X5-599

Top Contributor
Ich sehe nicht wo das falsch sein soll. Hier mal etwas Code

Java:
public static void main(String[] args) throws ParseException
{
		int[][] a = new int[][]{
				{0,0,0,1,0,0},
				{0,0,1,1,0,0},
				{0,1,0,1,0,0},
				{0,0,0,1,0,0},
				{0,0,0,1,0,0},
				{0,0,0,1,0,0},
				{0,0,0,1,0,0},
				{0,0,0,1,0,0}};
		
		int[][] b = new int[][]{
				{0,0,1,1,0,0},
				{0,1,1,1,1,0},
				{0,1,0,1,0,0},
				{0,0,0,1,1,0},
				{0,0,0,1,1,0},
				{0,1,0,1,1,0},
				{0,0,0,1,0,0},
				{0,0,0,1,0,0}};
		
		int[] aNumbers = new int[a.length];
		for(int i = 0; i < a.length; i++)
		{
			String rowA = "";
			for(int j = 0; j < a[i].length; j++)
				rowA += a[i][j];
			
			aNumbers[i] = Integer.parseInt(rowA, 2);
		}
		
		boolean arraysEqual = true;
		for(int i = 0; i < b.length; i++)
		{
			String rowB = "";
			for(int j = 0; j < b[i].length; j++)
				rowB += b[i][j];
			int nRowB = Integer.parseInt(rowB, 2);
			
			if((nRowB & aNumbers[i]) != aNumbers[i])
			{
				arraysEqual = false;
				break;
			}
		}
		
		System.out.println("Array are equal: " + arraysEqual);
}

Was genau würde da denn nicht deiner Anforderung entsprechen? Im Grunde wird das selbe geprüft. Die 1sen aus Zeile x von ArrayA müssen in der Zeile x von ArrayB vorhanden sein. Zusätzliche 1sen in ArrayB sind egal.
 

jgh

Top Contributor
...
Ich geh durch das A Array, überall da wo eine 1 steht überprüfe ich sofort ob an der gleichen Stelle in Array B auch eine 1 steht, wenn ja gehts weiter bis das array fertig ist, wenn nein, sind die arrays nicht gleich und es wird abgebrochen.

exakt...alles klar, oder brauchst du dabei noch Hilfe?

@ X5-599
was willst du da parsen und was haben da irgendwelche Strings verloren?
 

X5-599

Top Contributor
exakt...alles klar, oder brauchst du dabei noch Hilfe?

@ X5-599
was willst du da parsen und was haben da irgendwelche Strings verloren?

Ich setzte die einzelnen "Zeilen" des Arrays zu einer Binär-Zahl um (als String). Diesen String parse ich dann in einen echten Integer und der wird dann &-Verknüpft. Das Ergebnis wird auf Gleichheit überprüft. Ist vielleicht nicht die eleganteste Methode, aber erfüllt die Anforderungen vom OP.
Da das ein anderer Ansatz ist als die einzelnen Inhalte per Indeces zu vergleichen, dachte ich mir ich erwähne es mal.

Besonders effizient ist es sicher nicht. Im schlimmsten Fall (wenn Gleichheit besteht) muss komplett über beide Arrays iteriert werden. man könnte aber vielleicht alles in einer Schleife machen. Anstatt die erzeugte Binärzahl aus ArrayA in ein neues Array zu speichern könnte man gleich über die erste Zeile von ArrayB iterieren und die daraus erzeugte Binärzahl gleich vergleichen. Dann wär auch beim ersten Unterschied Schluss.

Mir fällt grad auf, dass der Ansatz wohl doch nicht soo unterschiedlich ist. Ob ich nur über die einzelnen "Zellen" der Arrays iteriere und einzeln vergleiche oder alle "Zellen" einer Zeile als Binärzahl interpretiere und eine Bit-Maskierung anwende ist wohl ziemlich egal. Wobei meine Variante bestimmt schlechtere Performance bietet.
 

jgh

Top Contributor
danke, aber die Frage war eher rheotorischer Natur^^...aber nichts für ungut, schön erklärt.

was ich damit meinte war...warum dieses geparse, ein einfacher Vergleich der int´s wäre imho viel einfacher, aber gut...der TO ist zufrieden, also passt dein Vorgehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
C Auf einzelne Werte aus HashSet zugreifen Java Basics - Anfänger-Themen 10
S Einzelne Werte von Array-Feld löschen Java Basics - Anfänger-Themen 15
C Einzelne Werte eines Arrays ausgeben Java Basics - Anfänger-Themen 2
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
X Wie kann ich Zahlen in einzelne Zifferne zerlegen? Java Basics - Anfänger-Themen 3
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
K Einzelne Email verschieben nicht möglich Java Basics - Anfänger-Themen 3
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
B lanterna einzelne Zeichen aus dem Terminal löschen Java Basics - Anfänger-Themen 0
C Matrixmultiplikation ohne einzelne Elemente aufzurufen Java Basics - Anfänger-Themen 2
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
A Variablen String Array in einzelne Strings auspalten Java Basics - Anfänger-Themen 4
J Methoden Einzelne Objekte eines Vectors addieren Java Basics - Anfänger-Themen 10
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
R Einzelne Zahlen von der Eingabe (Scan) weiterverarbeiten Java Basics - Anfänger-Themen 3
D Kleinere Positionsangabe als einzelne Pixel bei Image? Java Basics - Anfänger-Themen 28
H Input/Output JTextArea einzelne Zeile auslesen Java Basics - Anfänger-Themen 6
X String einzelne Buchstaben ersetzen Java Basics - Anfänger-Themen 4
M Einzelne Zeilen nach Zeichen auslesen Java Basics - Anfänger-Themen 4
T Erste Schritte einzelne Wörter aus textdatei lesen... Java Basics - Anfänger-Themen 4
M JTable einzelne Spalte rechtsbündig Java Basics - Anfänger-Themen 2
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
N TextZeile in einzelne Strings teilen, die mit Komma getrennt sind Java Basics - Anfänger-Themen 4
A einzelne Zeichen aus String auslesen Java Basics - Anfänger-Themen 3
J Von einem String einzelne Wörter speichern Java Basics - Anfänger-Themen 6
R einzelne Bits prüfen Java Basics - Anfänger-Themen 12
H String zerlegen in einzelne Buchstaben (char)?? Java Basics - Anfänger-Themen 7
A Einzelne TeilStrings einfärben Java Basics - Anfänger-Themen 3
S mehrere einzelne klassen in eine datei packen Java Basics - Anfänger-Themen 4
K Datentypen Liste: Einzelne Einträge ändern Java Basics - Anfänger-Themen 2
D Einzelne Ziffern aus einem String Java Basics - Anfänger-Themen 10
B Was für Aufgaben haben die einzelne Entwurfsmuster? Java Basics - Anfänger-Themen 9
B Laufzeitverschlechterung durch Auslagerung in einzelne Threads Java Basics - Anfänger-Themen 8
MrMilti einzelne Methoden einer Klasse auslagern Java Basics - Anfänger-Themen 6
T Einzelne Ziffer zusammenfügen (ohne Strings oder Arrays) Java Basics - Anfänger-Themen 2
M einzelne Pixel setzen/auslesen Java Basics - Anfänger-Themen 2
N aus HTML einzelne Inhalte (z.B. Tabelleninhalte) auslesen Java Basics - Anfänger-Themen 10
A Nur einzelne Methode einer anderen Klasse starten Java Basics - Anfänger-Themen 2
G Einzelne Datei im jar verändern ? Java Basics - Anfänger-Themen 5
B Einzelne Zellen in JTable markieren Java Basics - Anfänger-Themen 2
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
ven000m Primzahl.class wie starte ich diese einzelne Datei? Java Basics - Anfänger-Themen 10
R einzelne Zelle einer JTable bearbeiten Java Basics - Anfänger-Themen 2
M Object zu Int Problem, obwohl einzelne Objecte Int sind =( Java Basics - Anfänger-Themen 2
J String - einzelne Zeichen sortieren Java Basics - Anfänger-Themen 14
G Einzelne Zeilen beschreiben Java Basics - Anfänger-Themen 4
E einzelne Zeile mithilfe Steams aus Textdatei überschreiben Java Basics - Anfänger-Themen 23
F einzelne Buchstaben in JTextField ändern Java Basics - Anfänger-Themen 11
S setCellRenderer für EINZELNE Zelle Java Basics - Anfänger-Themen 9
S Zugriff auf einzelne Buchstaben eines String Java Basics - Anfänger-Themen 16
J Jtable - wie einzelne zelle markieren Java Basics - Anfänger-Themen 8
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum sind Werte in den Feldern ? Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
Jambolo Methode, welche die 3 letzten Parameter Werte speichert Java Basics - Anfänger-Themen 20
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
docmas 2DArray Werte werden nur untereinander ausgegeben Java Basics - Anfänger-Themen 1
M Nur int-Werte erlauben Java Basics - Anfänger-Themen 11
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
M Wie kann eine Methode eine andere Methode um Werte wie z.B. 1 erhöhen? Java Basics - Anfänger-Themen 6
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
J Methoden Positive Werte zählen Java Basics - Anfänger-Themen 3
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
H OOP Werte mit Set verändern Java Basics - Anfänger-Themen 6
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
H Welche Werte bei Objekterzeugung eingeben? Java Basics - Anfänger-Themen 2
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
E In Array Werte einfügen? Java Basics - Anfänger-Themen 5
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
I Werte (u.a. Geldbeträge) in Datenbank speichern und Rundungen? Java Basics - Anfänger-Themen 8
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
G Array Werte addieren Java Basics - Anfänger-Themen 4
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben