Mit mehrdimensionalen Integer-Arrays arbeiten

Status
Nicht offen für weitere Antworten.

Jay1980

Bekanntes Mitglied
Servus,

ich komme gerade nicht weiter und darüber hinaus denke ich, dass da sicher mehr Wege ans Ziel führen, daher bin ich für die Erfahrungswerte von euch dankbar.

Ich soll einen Algorithmus umsetzen, bei dem ich ein mehrdimensionales Integer-Array habe, ich speicher da drin die x und y Koordinate eines Punkts.

(Da es ja auch das Point()-Objekt gibt, und es beim Algorithmus auch um die Effizienz geht, danke ich schon mal, falls da einer zur Effizienz eines Lösungswegs was sagen kann.)

Also nun soll ich habe ich ein Integer-Array ia[xint][yint] und ich schaffe es nicht, dieses Array erst nach dem y-Wert zu sortieren - Array.sort() meckert verständlicherweise wenn ich da einfach ia als Parameter übergebe. Wie sortiert man das Array nach dem y-Wert aufsteigend, oder gibt es auch eine alternative Idee zu meinem Vorhaben 'Mehrdimensionales Array gib mir mal dein Element mit dem niedrigsten Y-Wert!'.

Danke vorab.
 

Schandro

Top Contributor
wie speicherst du da drin die y und x werte?
€dit:
Hast du es so gemacht, das die 2. Dimension immer eine length von 2 hat und [0] der x und [1] der y Wert ist?

Das würde irgendwie dem hier widersprechen:
 

Jay1980

Bekanntes Mitglied
Hm, das Array wird so angelegt bei mir:

int[][] ia = { {45, 85}, {23, 55}, {99, 11} }; // 45 ist x, 85 ist y
 
S

SlaterB

Gast
verwende Arrays.sort() mit einem Comparator, der zwei int[] vergleicht und dazu die zweite Komponente heranzieht
 

0x7F800000

Top Contributor
Java:
Arrays.sort(array, new Comparator<int[]>(){
   @Override
   public int compare(int[] p1, int[] p2){
      return p1[1]-p2[1];
   }
});
so in etwa...
 

Jay1980

Bekanntes Mitglied
Danke für den Tipp - ich sitz grad über der Insel und les das mit dem Comparator und Comparable und Array.sort() nach, aber die notwendige Transferleistung fehlt mir bis dato - wenn das für einen eine Dreizeilencode-Stegreifgeschichte ist, dann freut es mich, wenn einer den Code hier reinhaut.


UPDATE: Danke war ich etwas zu langsam mit meiner Bitte - so ists Recht.
 

Jay1980

Bekanntes Mitglied
Mann, mann, mann

ich krieg es immer noch nicht hin, ich befürchte es schnackelt erst wenn jemand den Code passend anpasst, der Fehler müsste in der vorletzten Zeile liegen, muss ich da etwa noch eine Schleife einbauen?!

Das Array soll ja erst nach dem zweiten Parameter des Arrays sortiert werden, damit ich mir dann bequem das erste Element des Arrays, also in meinem Fall, das Element mit der niedrigsten y-Koordinaten-Wert abholen kann.

Code:
public static void main(String[] args)
	{
		// Befuellen in Form von p[x][y];
		int[][] aa = {
				{ 523, 845 },
				{ 123, 777 },
				{ 45, 12 },
				{ 333, 333},
				{ 780, 230},
				{ 440, 120},
				{ 820, 840}
		};
		
		
		// Test Ausgabe vor Sortierung
		for ( int i = 0; i < aa.length; i++ )
		{
			for ( int j = 0; j < aa[i].length; j++)
			{
				System.out.print(aa[i][j] + "; ");
			}
			System.out.println();
		}
		
		System.out.println("Start der Sortierung...");
		
		
		Arrays.sort(aa, new Comparator<int[]>() // Arrays.util.sort erwartet den Namen des zu 
				// sortierenden Arrays und einen Comparator der einen generischen Typ mitliefern 
				// kann, hier int-Array, dieser Comparator ist eine innere Klasse.
		{
			@Override // irrelevant, eine Annotation
			public int compare(int[] p1 , int[] p2) // Methodendeklaration des Comparators
			{
				return p1[1]-p2[1]; // hier muss der Fehler liegen
			}
		});
 

Marco13

Top Contributor
Grad getestet... funktioniert doch? ???:L
(Wobei sortieren ziemlich ungünstig ist, wenn es NUR um das kleinste Element geht - dann lieber einmal durchlaufen, und sich das kleinste merken!)
 

0x7F800000

Top Contributor
funzt... hast du vielleicht irgendeine import-anweisung vergessen, oder steht der code in einer Klasse mit falschen namen, oder hast du irgenwo eine Klammer unterwegs verloren?
 

Jay1980

Bekanntes Mitglied
Steht bei mir alles in der main-Methode, vielleicht kann da das mal jemand in seine Eclipse einfügen, ich bin momentan da etwa verwirrt:

Code:
package propra;

import java.util.Arrays;
import java.util.Comparator;
import java.util.*;

public class JobaGrahamScan {
	
	// JobaGrahamScan
	// Eingabe: Array points mit n Punkten
	// Ausgabe: Array points aber umsortiert, dass die Punkte den Punkten
	// 			der konvexen Huelle entspricht und dann auch gezeichnet werden
	// 			kann. 
	
	
	// Hinweis das Array einmal abzugehen und sich den niedrigsten Wert nach dem y-Koordinate zu merken
	
	public static void main(String[] args)
	{
		// Befuellen in Form von p[x][y];
		int[][] aa = {
				{ 523, 845 },
				{ 123, 777 },
				{ 45, 12 },
				{ 333, 333},
				{ 780, 230},
				{ 440, 120},
				{ 820, 840}
		};
		
		
		// Test Ausgabe vor Sortierung
		for ( int i = 0; i < aa.length; i++ )
		{
			for ( int j = 0; j < aa[i].length; j++)
			{
				System.out.print(aa[i][j] + "; ");
			}
			System.out.println();
		}
		
		System.out.println("Start der Sortierung...");
		
		
		Arrays.sort(aa, new Comparator<int[]>() // Arrays.util.sort erwartet den Namen des zu 
				// sortierenden Arrays und einen Comparator der einen generischen Typ mitliefern 
				// kann, hier int-Array, dieser Comparator ist eine innere Klasse.
		{
			@Override // irrelevant, eine Annotation
			public int compare(int[] p1 , int[] p2) // Methodendeklaration des Comparators
			{
				return p1[1] - p2[1];
			}
		});
		
		
		// Test Ausgabe nach Sortierung
		for ( int i = 0; i < aa.length; i++ )
		{
			for ( int j = 0; j < aa[i].length; j++)
			{
				System.out.print(aa[i][j] + "; ");
			}
			System.out.println();
		}
	}
}
 
Zuletzt bearbeitet:

0x7F800000

Top Contributor
Jaa, alles schön und gut, bei der allerfrischesten Ganymede-version (heute runtergeladen) lautet die ausgabe:
Code:
523; 845; 
123; 777; 
45; 12; 
333; 333; 
780; 230; 
440; 120; 
820; 840; 
Start der Sortierung...
45; 12; 
440; 120; 
780; 230; 
333; 333; 
123; 777; 
820; 840; 
523; 845;
wo ist jetzt das Problem? keine jdk installiert *hihi* :D ?
 

Jay1980

Bekanntes Mitglied
Alter Schwede - jetzt erklärt mir mal das einer, es hat nicht kompiliert, dann ging ich auf dieses Kreuzlein, und in meinem ganzen Frust, habe ich die Auto-Vorschläge durchgemacht - er hat das @Overridden weggemacht und schwupps alles ging - wie kann das sein, das ist doch nur eine Annotation, die keine Auswirkung hat oder haben sollte ?!

Männer, aber wie gesagt, ich habe es nun auch geschafft - danke für die Geduld mit mir und eure Hartnäckigkeit.
 

0x7F800000

Top Contributor
Alter Schwede - jetzt erklärt mir mal das einer, es hat nicht kompiliert, dann ging ich auf dieses Kreuzlein, und in meinem ganzen Frust, habe ich die Auto-Vorschläge durchgemacht
welches "Kreuzlein"? Da kommt bei mir nirgends irgendein "Kreuzlein"...
Und wieso "aus Frust"? Warum nicht gleich? Dazu ist die IDE doch da...
Einzige annotation die im code vorhanden war, war @Override, diese sollte von allen compilern korrekt behandelt werden, eclipse-compiler hat wie jede software zwar auch einige macken, aber @Override interpritiert er garantiert richtig.
@Overridden weggemacht und schwupps alles ging
es gibt keine Annotation "@Overridden". In deinem code oben auch nicht.
wie kann das sein, das ist doch nur eine Annotation, die keine Auswirkung hat oder haben sollte ?!
Wie das denn? Wieso sollte etwas keine Auswirkungen haben? Ist das zu deko-zwecken oder was? @Override erzeugt schwerwiegende fehler, wenn sie an eine methode drangehängt wird, die gar nichts überschreibt: und genau das ist ja das praktische an dieser Annotation: sie macht mächtig Krach zur Compile-Zeit, damit sich keine schwer auffindbaren Fehler in Stille in den Code einschleichen können. Auf diese Annotation sollte man auf keinem fall verzichten.
 

Jay1980

Bekanntes Mitglied
Naja, durch solche Fehler lern ich, und dass ich mit meinen Annahmen als Java-Beginner oft falsch liege ist mir klar und jedes Mal wenn ich da eine übern Deckel krieg, lern ich was und meine Programmierwelt wird etwas weiter in die richtige Richtung gerückt. Künftig werde ich natürlich die IDE-Vorschläge berücksichtigen, tue ich auch jetzt schon, aber mit der Aussage zu der Zeile unter @Override

Multiple markers at this line
- The method compare(int[], int[]) of type new Comparator<int[]>(){} must override a superclass
method
- implements java.util.Comparator<int[]>.compare
konnte ich eben nichts damit anfangen und war sehr verblüfft, dass dann alles ging, wenn ich das @Override entferne - das ist jetzt übrigens auch noch so.
 

0x7F800000

Top Contributor
DAS wundert mich jetzt auch ziemlich...
Du hast Eclipse hast du gesagt?
Schaue bitte unter
-> Project
-> Properties
-> Java Compiler
-> Compiler Compliance Level
nach, was da steht. Falls es aus irgendeinem Grund 1.5 sein sollte, dann stell es auf 1.6 um, laut diesen Meldungen:
Mihail Stoynov's blog! - @Override in eclipse
sollte sich das Problem dadurch erledigen.
Falls du es mit dem sun-compiler kompilierst, könntest du aber auch gegen ziemlich dasselbe Problem gerannt sein:
Bug ID: 5008260 @Override should be generalized from 'superclass' to 'supertype'
Anscheinend haben die sich selbst erst "vor kurzem" darauf geeinigt, wie sie das denn nun konkret machen wollen. Stell's auf 1.6 , wenn's dann immer noch meckert, bin ich dann erstmal auch ratlos.
 

0x7F800000

Top Contributor
Nja, das ist noch alles ziemlich in Bewegung hier ;)
Zum Glück. Lieber "nicht perfekt aber in bewegung" als "nicht perfekt und tot" :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Verständnisproblem bei mehrdimensionalen Arrays Allgemeine Java-Themen 3
mrStudent The method append is not applicable for the arguments (Queue<Integer>, Queue<Integer>) Allgemeine Java-Themen 4
O JSON in Integer parsen Allgemeine Java-Themen 5
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Mit Lombok Integer Range prüfen Allgemeine Java-Themen 6
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
R Datentypen Korrekte integer in Hex ASCII Konvertierung und serialisierung Allgemeine Java-Themen 1
B List<Integer> ist List<Double> ? Allgemeine Java-Themen 6
E String in Zahl umwandeln, ohne Befehl Integer.parseInt Allgemeine Java-Themen 3
J Eine bestimmte Zahl im Integer ändern Allgemeine Java-Themen 9
V Eingegeben String Splitten und in Integer umwandeln Allgemeine Java-Themen 2
J Transfer von Integer zwischen zwei Clients - RMI Allgemeine Java-Themen 4
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
X Integer.numberOfTrailingZeros() Allgemeine Java-Themen 1
K Array, Int expected, Integer found Allgemeine Java-Themen 5
HarleyDavidson Best Practice Integer-Zahlenfolge über mehrere Programmstarts Allgemeine Java-Themen 7
B Transferable in String/Integer umwandeln Allgemeine Java-Themen 11
K Input/Output Integer.parseInt() an Textdateien anwenden Allgemeine Java-Themen 2
D Beste Collection für Integer Allgemeine Java-Themen 4
Zettelkasten Double --> Integer Allgemeine Java-Themen 4
M Datentypen ArrayList in Integer konvertieren Allgemeine Java-Themen 3
S Variablen Prüfen ob Number vom Typ Integer, Float, Double, ... ist Allgemeine Java-Themen 2
O Input/Output Textfeld: nur Integer annehmen Allgemeine Java-Themen 9
T int <-> integer, double <-> Double... Allgemeine Java-Themen 2
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
GianaSisters Klassen ArrayList Index Integer int Allgemeine Java-Themen 5
G Datentypen JGoodies Binding und JSpinner mit Integer Allgemeine Java-Themen 2
L Problem mit Integer.parseInt Allgemeine Java-Themen 17
C Benchmark: ArrayList<Integer>, Integer[], int[] Allgemeine Java-Themen 10
Rudolf Aus Collection<Integer> eine Zahl machen Allgemeine Java-Themen 2
O Nach parse von String zu Integer verliere ich Programmablauf! Allgemeine Java-Themen 10
Z Cast von Long zu Integer funktionert nicht Allgemeine Java-Themen 3
E Zweidimensionales Array Integer[10 000][10 000] -> out of memory? Allgemeine Java-Themen 4
T Integer aus InputStream lesen Allgemeine Java-Themen 3
S String[] in Integer umwandeln Allgemeine Java-Themen 16
K Heap-Volllaufen bei ArrayList<Integer> Allgemeine Java-Themen 9
C Character in Integer Allgemeine Java-Themen 12
D Double to Integer - ist das möglich? Allgemeine Java-Themen 3
R Anführungszeichen Integer.valueOf(String).intValue(); Allgemeine Java-Themen 6
H Integer/String Allgemeine Java-Themen 9
MQue byte[] Array to Integer Allgemeine Java-Themen 4
R Eigene ArrayList vom Typ Short, Integer oder Double Allgemeine Java-Themen 4
G erzeugen von "ArrayList<Integer>[][]" Allgemeine Java-Themen 7
M Integer.parseInt Allgemeine Java-Themen 4
G enum Integer zuweisen Allgemeine Java-Themen 14
G Integer aus String Allgemeine Java-Themen 4
X cannot convert from Object[] to Integer[] Allgemeine Java-Themen 2
B 16Bit Integer aus ByteArray im Little Endian Format Allgemeine Java-Themen 17
O java.lang.NumberFormatException für normalen integer Allgemeine Java-Themen 4
T Integer hhmm addieren Allgemeine Java-Themen 11
MQue Integer in String Allgemeine Java-Themen 2
G Datumswert String in Integer umwandeln Allgemeine Java-Themen 2
P Integer und Bit-operationen Allgemeine Java-Themen 21
M Java 1.4 und Integer Allgemeine Java-Themen 3
G ArrayList<String> to ArrayList<Integer Allgemeine Java-Themen 2
S Integer zu int konvertieren - JUnit Allgemeine Java-Themen 12
J Integer Array Wert vorhanden? Allgemeine Java-Themen 6
M String nach Integer und führende Nullen Allgemeine Java-Themen 6
B Plaintext Integer einlesen und verarbeiten Allgemeine Java-Themen 3
R cast Integer[] zu int[] Allgemeine Java-Themen 2
D byte nach integer? Allgemeine Java-Themen 4
MQue Object in Integer umwandeln Allgemeine Java-Themen 3
H Integer#valueOf(int) bei 1.4 Allgemeine Java-Themen 7
M Datenstrukrue, List<Map<Integer, Map<String, . Allgemeine Java-Themen 2
M Integer in String umwandeln Allgemeine Java-Themen 7
S Object nach Integer umwandeln Allgemeine Java-Themen 13
R Integer will sich nicht lesen lassen! Allgemeine Java-Themen 9
G Umwandlung Byte in Integer Allgemeine Java-Themen 12
M reflection Integer != int ? Allgemeine Java-Themen 3
P int != Integer Allgemeine Java-Themen 3
N Prüfen ob ein String in einen Integer umgewandelt werden kan Allgemeine Java-Themen 4
P Class zu Integer, String, Double etc. Allgemeine Java-Themen 11
S Integer-Zahlen in Excel-Sheet schreiben Allgemeine Java-Themen 10
T JNI: jcharArray: warning: cast to pointer from integer of. Allgemeine Java-Themen 5
R Float richtig in Integer ? Allgemeine Java-Themen 4
T Integer und TextFelder Allgemeine Java-Themen 3
S Integer-splitten für Abfrage. Allgemeine Java-Themen 4
M Index eines Arrays ermitteln und als Integer ausgeben Allgemeine Java-Themen 7
B Integer zählen bzw. speichern Allgemeine Java-Themen 3
H Array nimmt keinen in Integer konvertierten String auf! Allgemeine Java-Themen 26
H Prüfen, ob es sich um ein Integer handelt Allgemeine Java-Themen 4
J Integer.parseInt funktioniert nicht immer Allgemeine Java-Themen 3
G Nur Integer Werte in JTextField Allgemeine Java-Themen 4
V Typumwandlung Integer, Float etc in String Allgemeine Java-Themen 4
C String in Integer wandeln Allgemeine Java-Themen 17
Ü Arrays vergleichen Allgemeine Java-Themen 59
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Ü Eurobeträge in möglichst wenig Scheine/Münzen zerlegen (2D-Arrays) Allgemeine Java-Themen 27
Buroto Arrays generator Allgemeine Java-Themen 10
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
Muatasem Hammud Erstellung von Testdaten für Arrays Allgemeine Java-Themen 6
Junger_Basileus Attribute, Arrays, Schleifen Allgemeine Java-Themen 9
P Generics und Arrays Allgemeine Java-Themen 6
O Arrays an DOCX-Stamper Library übergeben Allgemeine Java-Themen 1
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
R Spalten/Zeilen verschieben in zweidimensionalen Arrays? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben