2D Array mit Zeilenverschiebung Sortieren

JadeNinja

Mitglied
Hi!
Ich habe ein problem beim Sortieren eines 2D Arrays! Ich suche jetzt schon seit stunden nach einer Lösung allerdings werde ich einfach nicht fündig. Folgendes:

Mein Programm zieht mit JDBC aus einer MySQL Datenbank einen gesuchten wert einer bestimmten Spalte heraus und speichert dies mit dem restlichen inhalt der Zeile in ein String Array. Einer dieser werte, im array in Spalte 0, beinhaltet einen Unix Timestamp, nach diesem soll das Array sortiert werden.
Die Algorithmen die ich bisher gefunden habe, haben leider nicht die gesamte Zeile verschoben sondern dann nur den Wert der Zeit, was mir nicht weiterhilft. Wie schreib ich nun einen Sortieralgorithmus der mein Array nach dem Timestamp der in String form vorliegt so, das die anderen werte der Zeile mit verschoben werden??
Hier mal der Code um den es sich handelt:
Java:
	public static void userid(){
		
		try{
			a = con.createStatement();		
			ResultSet rsstart = a.executeQuery("SELECT START_TIME, END_TIME, LOCAL_NUMBER, PROVIDER, USER_TIME_ZONE, USER_ID FROM *** WHERE USER_ID = "+userid);		
			
			
			while(rsstart.next()){
				
				String start = rsstart.getString("START_TIME");
				String end = rsstart.getString("END_TIME");
				String timezone = rsstart.getString("USER_TIME_ZONE");
				String provider = rsstart.getString("PROVIDER");
				String number = rsstart.getString("LOCAL_NUMBER");
				String user = rsstart.getString("USER_ID");

				
				XML.createarray(start, end, timezone, provider, number, user);							
				
			}
			
			
			
			System.out.println(); 
	         }catch (SQLException e) {
	            System.err.println("Exception: " + e.getMessage());
	            System.err.println("SQLState: " + e.getSQLState());
	            System.err.println("VendorError: " + e.getErrorCode());

			}
		
	         
	}
Das ist die Methode in der die Daten aus der Datenbank gezogen werden.
Und hier die Methode die die Daten in das Array schreibt:
Java:
	static void createarray(String start, String end, String timezone, String provider, String number, String user){
		Object [][] data1 = {{start, end, timezone, provider, number, user}};


        
	        printArray(data1);
		        
		    }
Ich hoffe mir kann irgendjemand helfen xD

Mfg
 

eRaaaa

Top Contributor
Mhm...
- warum sortierst du es denn nicht schon per SQL ?
oder
- anstelle von einem 2D Array würde es sich evtl. anbieten eine Liste von Objekten anzulegen, die wiederum die Werte beinhalten. Dann könntest du einfach die Liste z.B. mit Collections.sort sortieren
- vllt auch eine Mischung aus beidem :D

oder habe ich etwas übersehen? ;/
 

JadeNinja

Mitglied
Nein, der gesamte Output soll in eine XML datei geschrieben werden. Es muss kein Object sein, aber mit String[][] bin ich auch nicht weiter gekommen, hatte nur einen Algorithmus ausprobiert der das mit Object machen sollte...

Edit:
Und das Sortieren über die Datenbank fällt hierbei leider schon im vorfeld weg, darauf habe ich keinen Einfluss, mein Programm soll das machen.
 

ARadauer

Top Contributor
ich halte ned viel von doppelten Arrays.... unflexibel und nicht aussage kräftig.. Also eine Liste von Objekten finde ich da schon weit eleganter... aber gut sowas könntest du natürlich machen....

Java:
 public static void main(String[] args) {  
      Object[][] data ={{2, "Zwei"},{1, "Eins"}, {3, "Drei"},{5, "Fünf"},{4, "Vier"}};
      sort(data);
      printData(data);
      
  }
   
   public static void printData(Object[][] data){
      for(int i = 0; i < data.length; i++){
         for(int j = 0; j < data[i].length; j++){
            System.out.print(data[i][j]+" ");
         }
         System.out.println();
      }
   }
   
   public static void sort( Object[][] data){
     
      Arrays.sort(data,new Comparator<Object[]>() {

         @Override
         public int compare(Object[] o1, Object[] o2) {
            int v1 = (Integer) o1[0]; //Hier könnte es krachen, da würd ich noch sauberer arbeiten...
            int v2 = (Integer) o2[0];
            if(v1>v2){
               return 1;
            }else if(v1<v2){
               return -1;
            }
            return 0;
            
         }
      }); 
   }
 

JadeNinja

Mitglied
Das ist eine Schulaufgabe :p Mein Programm soll aus einer MySQL Datenbank einen Einzelverbindungsnachweis generieren im XML Format. Die Daten in der Datenbank sollen bzw. müssen so stehen bleiben wie sie sind.
Hab mir das eben mal überlegt was eRaaa schrieb. Wie genau meinst du das?
Ich mach ein Objekt das ich dann nach dem Timestamp benenne und dort schreibe ich dann die anderen Werte mit rein? Ist dabei nicht das Problem das dabei alle anderen Werte zu einem String zusammengefasst werden?
Mfg
 

eRaaaa

Top Contributor
Hab mir das eben mal überlegt was eRaaa schrieb. Wie genau meinst du das?

ich meinte, du könntest dir einfach eine Klasse schreiben:
Java:
class Data {
	private String start;
	private String end;
	private String timezone;
	private String provider;
	private String number;
	private String user;

	/**
	 * @return the start
	 */
	public String getStart() {
		return start;
	}

	/**
	 * @return the end
	 */
	public String getEnd() {
		return end;
	}

	/**
	 * @return the timezone
	 */
	public String getTimezone() {
		return timezone;
	}

	/**
	 * @return the provider
	 */
	public String getProvider() {
		return provider;
	}

	/**
	 * @return the number
	 */
	public String getNumber() {
		return number;
	}

	/**
	 * @return the user
	 */
	public String getUser() {
		return user;
	}

}

und anstelle der Zeile [c]XML.createarray(start, end, timezone, provider, number, user); [/c] erstellst du eben ein Objekt von Data und legst dieses in einer Liste ab(die du vor der while-Schleife oder sonst wo erstellt hast).
Dann könntest du einfach die Liste mit einem eigenen Comparator/Comparable(ähnlich wie dem von ARadauer sortieren(nur eben dann halt mit Hilfe des entsprechenden getters)) ...

Wieso du jetzt ORDER BY o.ä., nicht benutzen darfst, ist mir allerdings immer noch nicht ganz klar. Ist das explizit verboten in der Aufgabenstellung oder wie?
 

ARadauer

Top Contributor
Wie genau meinst du das?
Ich mach ein Objekt das ich dann nach dem Timestamp benenne und dort schreibe ich dann die anderen Werte mit rein? Ist dabei nicht das Problem das dabei alle anderen Werte zu einem String zusammengefasst werden?
sorry, irgendwie ist mir vom chinesischen essen schlecht und ich hab kopfweh... sonst würde ich dir gerne die vorteile objektorienterter programmierung erläutern... aber es hat defenitv vorteile wenn man nicht eine liste mit einer reihe von werten in der vielleicht noch irgendwelche werte drinnen sehen die zahlen oder text, datum sonst was sein können.... äöhmn wo war ich.. also das nicht sondern eine liste mit kunden, die einen namen, adressse und zb kontostand haben ;-)
 

JadeNinja

Mitglied
Mit MySQL kenne ich mich nicht aus. Was ist denn ORDERBY? Ich dachte das verändert die MySQL datenbank? Oder sortiert er das dann direkt nach dem query? Gibt es denn nicht eine ganz einfache Methode um ein 2 Dimensionales Array zu Sortieren das dann ganze zeilen mit verschiebt?
Mfg
 

ARadauer

Top Contributor
ja genau...
oder mit Timestamp...

Java:
import java.sql.Timestamp;

class Data  implements Comparable<Data>{
    private Timestamp start;
    private Timestamp end;
    ...    

   public Timestamp getStart() {
      return start;
   }
   public void setStart(Timestamp start) {
      this.start = start;
   }
   public Timestamp getEnd() {
      return end;
   }
   public void setEnd(Timestamp end) {
      this.end = end;
   }
   ...
   @Override
   public int compareTo(Data o) {
     return start.compareTo(o.getStart());
   }
 
}
 

eRaaaa

Top Contributor
Mit MySQL kenne ich mich nicht aus. Was ist denn ORDERBY? Ich dachte das verändert die MySQL datenbank? Oder sortiert er das dann direkt nach dem query?
SQL ORDER BY
Gibt es denn nicht eine ganz einfache Methode um ein 2 Dimensionales Array zu Sortieren das dann ganze zeilen mit verschiebt?

Doch, siehe ARadauer`s Arrays.sort + Comparator z.B. (man könnte das noch vereinfachen, indem man einfach die compareTo von Integer nutzt *g*) ...
 

ARadauer

Top Contributor
Gibt es denn nicht eine ganz einfache Methode um ein 2 Dimensionales Array zu Sortieren das dann ganze zeilen mit verschiebt?

hab ich doch schon gepostet...

Java:
 public static void sort( Object[][] data){
     
      Arrays.sort(data,new Comparator<Object[]>() {
 
         @Override
         public int compare(Object[] o1, Object[] o2) {
            int v1 = (Integer) o1[0]; //Hier könnte es krachen, da würd ich noch sauberer arbeiten...
            int v2 = (Integer) o2[0];
            if(v1>v2){
               return 1;
            }else if(v1<v2){
               return -1;
            }
            return 0;
            
         }
      }); 
   }
 

JadeNinja

Mitglied
Ja das habe ich schon versucht, aber er sortiert es einfach nicht richtig!
hier mal ein kleiner auszug der daten wenn ichs einfach mit deinem algorithmus mache:

1256568701996 1256568704709 -7 **** +**** ****
1256568701989 1256568704712 -7 **** +**** ****
1256568701978 1256568704716 -7 **** +**** ****
1256568701972 1256568704720 -7 **** +**** ****
1256568701965 1256568704724 -7 **** +**** ****
1256568701956 1256568704728 -7 **** +**** ****
1254251043304 1254251148092 -7 **** +**** ****
1256568701950 1256568704731 -7 **** +**** ****
das erste is der start wert und das 2. der end wert
eindeutig nicht sortiert, aber warum denn?! xD
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
sgtcoopa Array übergeben Schleife Java Basics - Anfänger-Themen 0
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben