Java int [] [] Array - Iterieren und Wert finden

7

Ich habe ein Array in Form von ' int[][] ', das die Koordinaten eines kleinen Gitters darstellt. Jeder Koordinate wurde ein eigener Wert zugewiesen. zB array[0][4] = 28 ......

Ich habe zwei Fragen. Erstens, wie durchlaufe ich alle gespeicherten Werte. Zweitens möchte ich in der Lage sein, einen Wert einzugeben und seine spezifischen Koordinaten im Gitter zurückgeben zu lassen. Was wäre der beste Weg, um das zu erreichen?

Danke für jede Hilfe!

    
Tray 23.01.2009, 20:47
quelle

7 Antworten

23

Sie können entweder mit for-Schleifen oder mit erweiterten for-Schleifen iterieren:

%Vor%

oder

%Vor%

Die erste Version wäre die einfachste Lösung für die Frage "Finde die Koordinaten" - überprüfe einfach, ob der Wert in der inneren Schleife korrekt ist.

    
Jon Skeet 23.01.2009, 20:54
quelle
3

um die Werte zu durchlaufen, benutze Schleifen:

%Vor%

um auf die Koordinaten zuzugreifen, die auf dem Wert basieren, würden Sie eine Art doppelter hashmap benötigen (schauen Sie auf java.util.HashMap), aber mir ist nichts bewusst, was das direkt tut

    
user54579 23.01.2009 20:52
quelle
2

Um über alle Elemente im Gitter zu iterieren, versuchen Sie Folgendes:

%Vor%     
Kevin Loney 23.01.2009 20:53
quelle
1

Wenn Ihr Raster nicht auf irgendeine Weise sortiert ist, werden Sie wahrscheinlich nicht besser als eine Brute-Force-Suche sein.

Zum Iterieren denke ich, es wäre ungefähr so ​​(die Syntax könnte etwas abweichen, ich habe mich eine Zeit lang nicht mit Arrays in Java beschäftigt.):

%Vor%

Für die Suche müssten Sie diese wahrscheinlich zum Iterieren verwenden und dann zurückkehren, sobald Sie sie gefunden haben.

Wenn Sie die Position desselben Werts mehrere Male nachschlagen, möchten Sie möglicherweise die Ergebnisse mithilfe einer Hashtabelle protokollieren.

    
Herms 23.01.2009 20:52
quelle
0

Verwenden Sie verschachtelte for-Schleifen, um über die x- und y-Dimensionen zu iterieren, sodass Sie jeden Wert einzeln nacheinander durchlaufen können.

Um einen Wert einzugeben, tun Sie dasselbe wie oben, aber suchen Sie nach einer Übereinstimmung mit dem von Ihnen gewünschten Wert.

    
alexwood 23.01.2009 20:53
quelle
0

Sie werden am glücklichsten sein, wenn Sie alle diese Sammlungen in einer einzigen Klasse blockieren und sie in keiner Weise verfügbar machen.

Dies bedeutet, dass Sie Ihre Such- und Suchroutinen ebenfalls in diese Klasse verschieben.

Für den Speicher werden alle Iterationen behandelt, eine Hashtabelle und eine Suche hinzugefügt. Ich habe diesen Kommentar auf nikolais Post gesetzt:

Speichern Sie neue Ganzzahl (ix + iy * 1000) als Wert in Ihrer Hash-Tabelle. Wenn Ihr y-Index über 1000 gehen kann, verwenden Sie eine größere Zahl - Ints sind wirklich groß. Um es zurück zu bekommen, verwende ix = val% 1000, iy = val / 1000.

Wenn Ihr Array und Ihre Hashtabelle in derselben Klasse gekapselt sind, ist der Rest Ihres Codes ziemlich einfach zu schreiben und viel sauberer.

    
Bill K 23.01.2009 21:32
quelle
-1

Im Allgemeinen gibt es keine Möglichkeit, die spezifischen Koordinaten eines bestimmten Werts zu finden, es sei denn, man durchläuft das Array und sucht danach. Wenn die Werte im Array garantiert eindeutig sind (d. H. Jeder Wert tritt nur in einer Zelle auf), könnten Sie ein separates Array als Index verwalten, in dem die Koordinaten jedes Werts gespeichert werden, der durch den Wert indiziert wird.

    
David Z 23.01.2009 20:53
quelle

Tags und Links