Problem beim Sortieren einer Liste

Status
Nicht offen für weitere Antworten.

Glems

Mitglied
Hallo Leute,
ich habe hier eine Liste die wie folgt aufgebaut ist:
[MKS 2006, breakpointTime, 03.03.2009 03:03:03, 14, 2, 03.08.2009 10:10:10, 70, 10, ...]
Also habe ich am Anfang 2 allgemeine Einträge, dann ein Datum (welches ich in ein Datenobjekt umgewandelt wird) und dann 2 Einträge als Zahlen.

Mein Problem ist jetzt, dass ich die Liste nach Datum sortieren möchte aber ohne die Zugehörigkeit zu verlieren. Da die jeweils 2 folgenden Einträge zu diem jeweiligen Datum gehören.

Ich habe zwar schon nach Sortierungen gesucht, aber leider nur gefunden wie ich die Datenobjekte in einem Array sortieren kann (dabei würde ich ja dann die zugehörigen Daten verlieren).

Könnt ihr mir bitte helfen(, ich weiß überhaupt nicht wie ich da ran gehen soll)?

Grüße und Danke.
 
S

SlaterB

Gast
wandle die Daten um, merke dir die zwei Strings separat,
aus jeweils einen Datum + beliebigen Restdaten erstellst du ein Objekt einer neuen Klasse, z.B.
DateList { Date .., List .. }
oder
DateData { Date .., int wert1, int wert2 }

dann hast du am Ende eine Liste von DateList-Objekten, die du nach dem jeweiligen Datum sortieren kannst,

danach behälst du entweder die vorteilhaft strukturierten Daten oder wandelst alles wieder in eine Liste des Ursprungsformats um
 
M

maki

Gast
Könnt ihr mir bitte helfen(, ich weiß überhaupt nicht wie ich da ran gehen soll)?
IMHO ist deine Liste Schrott, schreibe dir einen eigenen Datentypen (Klasse) der die Werte aufnimmt, mehrere davon in eine Liste, einen eigenen Comparator geschrieben (oder comparable implementieren) und mit [c]Collections.sort[/c] sortieren.
 

Glems

Mitglied
ok ... liste ist mist - hab ich verstanden. :oops:

Das mit den Objekten hört sich sehr gut an, auch wegen der späteren Handhabung. Aber die Frage die sich gerade aufwirft ist:
Wie erstelle ich die neuen Objekte dynamisch?

Die Liste sieht so aus:
[MKS 2006, breakpointTime, exit, 03.03.2009 03:03:03, 2, exit, 02.02.2009 02:02:02, 2, exit, 01.01.2009 01:01:01, 2, disconnect, 12.12.2008 12:12:12, 3, disconnect, 01.01.2009 13:13:13, 3, disconnect, 02.02.2009 12:12:12, 3, ...]

Wie lege ich nun genug Objekte an, die verschiedene Namen haben, die Namen müssen doch zur Laufzeit bekannt sein.
 
S

SlaterB

Gast
die Objekte kommen in eine Liste, brauchen keinen Namen
derzeit haben die Date-Objekte der Ursprungsliste doch auch keinen Namen
 

Painii

Bekanntes Mitglied
Code:
List<Data> dataList = new ArrayList<Data>();
while(nochObjektImArray){
 Data dat =deinArray.parse();
 dataList.add(dat); //Die Liste merkt sich das Objekt, du brauchst keine eigene Variable   dafür bereithalten
}

Dann musst du zum Schluss eben nurnoch
a) das parsen übernehmen (also eine Funktion die aus deinem Array alle Daten ausliest und daraus ein eigenes Data-Objekt erstellt)
b) die Klasse Data so bauen das du alles bekommst was du willst (also ein Datum, und die anderen werte wie exit und so)

Achja, und wenn du dann schon alles in einer List hast, kannst du Data auch noch Comparable machen - dann kannst du die Sachen direkt über dataList sortieren.
 

Glems

Mitglied
ok, gehen wir mal davon aus ich hab eure antworten verstanden.
(Painii durchläuft eine Liste in der Objekte vorhandne sind - woher kommen diese / wie heißen diese? Und Data wäre dann das selbstdefinierte Objekt?)
Dann fehlt mir doch immer noch der Teil in dem ich beliebig viele Objekte erstelle.
sagen wir mal:
Java:
Data meinObjekt = new Data ("exit", "22.12.2009 00:00:00", 2);
Damit hätte ich ein Objekt (mit dem Namen meinObjekt), aber wie mache ich beliebig viele daraus? Ich glaube ich steh tierisch auf dem Schlauch.

Ich hab hier zwar etwa gefunden mit dynamischen Objektnamen, aber ds hat mich auch nicht weiter gebracht.

Grüße
 

ARadauer

Top Contributor
Java:
public class Test{
	public static void main(String[] args) {
		ArrayList<Data> meineListe = new ArrayList<Data>();
		
		for(du interierst über irgendwas){ //keine ahnung wo deine daten her kommen ;-)
		
			Data meinObjekt = new Data ("exit", "22.12.2009 00:00:00", 2);
			meineListe.add(meinObjekt);
		}
	}
}
 
M

maki

Gast
Damit hätte ich ein Objekt (mit dem Namen meinObjekt), aber wie mache ich beliebig viele daraus? Ich glaube ich steh tierisch auf dem Schlauch.
zB. in einer for(each) Schleife ;)
Die liste dafür hast du ja schon.

Vielleciht hilft ein allgemeines Collection Tutorial: Trail: Collections (The Java™ Tutorials)

Jedenfalls sind COllections sehr wichtig in Java, sollte man schon verstanden haben.
 

Glems

Mitglied
:oops: Ich hab sogar mit meinem Kommilitonen drüber geredet und wir sind beide nicht drauf gekommen.
Danke!
Jetzt hab ich es verstanden und versuch mich an der Umsetzung.
:toll:
 

Glems

Mitglied
Hallo ... ich nochmal,
nun hab ich hier eine Liste mit Objekten, welche Datum, Name und Wert enthalten.
Diese Liste würde ich nun gerne nach Datum sortieren, weiß aber nicht wie.

Ich habe gelesen, dass es möglich ist Datumsobjekte in einer Liste zu sortieren. Jedoch habe ich nichts gefunden wie ich Listen, die Objekte welche ein solches Datumsobjekt enthalten sortieren kann.
Versucht habe ich folgendes, jedoch weiß ich nicht wie ich dabei definieren kann das nach Datum in den Objekten von breakpointList sortiert werden soll.

Java:
if (breakpointList != null) {
   Collections.sort(breakpointList);
}

Grüße und Danke
 

Glems

Mitglied
Ok, eine (weitere) dumme Frage:
Ich bekomme bei der compareTo Methode immer ein int zurück, der mir sagt ob das jetzige Objekt größer, gleich oder kleiner dem anderen Objekt ist.
Gibt es nicht von Java aus eine Möglichkeit, dass ich automatisch alle Objekte dieser Liste überprüfen kann oder muss ich mir da was basteln, dass die Methode welche ich in mein breakpointObject.java einbinden muss ständig aufruft?

edit: (Denn im normalfall sind es deutlich über 50 Datenobjekte die verglichen werden müssen)
 

ARadauer

Top Contributor
nein du bastelst dir nichts... Java macht das schon mit Collections.sort.. du musst ihm nur sagen, wann ein Objekt größer ist als das andere... und das machts du mit dem Comparabel Interface...

Wenn du 10 Millionen Objekt sortierst, vergleichst du auch nur immer eines mit dem anderen... das muss halt dann ein paar mal geschehen, aber wie das genau abläuft... das lass mal die sorgen von java sein...
 

Glems

Mitglied
Ok, ich habe eine Klasse mit dem Namen BreakpointObject, welche das Objekt bereitstellt. Außerdem eine Klasse LineChart welche die Daten bereitstellt.

In der Klasse BreakpointObject habe ich die compareTo-Methode implementiert (nach dem Beispiel von O'Reilly). Leider wird in dem Beispiel das Alter einer Person mit einer anderen verglichen, das wird durch die Substraktion der Alter ermöglicht.
Aber wie bekomme ich das mit den Daten hin?

Was ich bis jetzt versucht habe:
[Java]@Override
public int compareTo(Object bpO) throws ClassCastException {
if (!(bpO instanceof BreakpointObject))
throw new ClassCastException("Breakpoint object expected.");
SimpleDateFormat anotherDate = ((BreakpointObject) bpO).getDate();
return this.date - anotherDate;
}
[/code]
Wie vergleiche ich nun an dieser Stelle die Daten? Ich kann sie ja nicht subtrahieren. Ein < bringt es hier ja auch nicht?
Sorry für die vielen Fragen, aber ich glaube ich werde langsam blind für die einfachsten Lösungen :(

@bygones das programm soll jeden Tag laufen, pro Tag kommen 25 Datensätze hinzu. Das ganze läuft für 17 Tools und ist aufs erste für 5 Jahre angesetzt. Somit erhöht sich die Anzahl der Daten an jedem Tag und ich denke auf lange Sicht sind es genug daten um damit die ein oder andere Maschine ins schwitzen zu bringen ;-)
 
Zuletzt bearbeitet:

Leroy42

Top Contributor
Wie vergleiche ich nun an dieser Stelle die Daten? Ich kann sie ja nicht subtrahieren. Ein < bringt es hier ja auch nicht?

Dann vergleiche entweder die Komponenten oder hol' dir aus dem
Date-Objekt die Millisekundenwerte (Ich glaube Millisekunden seit
dem 1. Januar 1970) und gib deren Differenz zurück
 
S

SlaterB

Gast
Date-Objekte kann man comparen, die haben die compareTo-Methode,

was soll aber das SimpleDateFormat da?
SimpleDateFormat speichert keine Informationen, sondern sorgt nur für die Formatierung in der Anzeige
 
B

bygones

Gast
Was ich bis jetzt versucht habe:
[Java]@Override
public int compareTo(Object bpO) throws ClassCastException {
if (!(bpO instanceof BreakpointObject))
throw new ClassCastException("Breakpoint object expected.");
SimpleDateFormat anotherDate = ((BreakpointObject) bpO).getDate();
return this.date - anotherDate;
}
[/code]

und bitte keine ClassCastException in dem compareTo... nutze doch die generische Typinformation von Comparable
Java:
public class BreakpointObject implements Comparable<BreakpointObject> {
    public int compareTo(BreakpointObjectbpO) {
     // ...
   }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
E Datentypen Problem beim Speichern von enum. Java Basics - Anfänger-Themen 10
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
B Gleicher Prozess starten und stoppen (Problem beim Stoppen) Java Basics - Anfänger-Themen 5
DestinatioN Problem beim splitten eines Satzes in Wörter und die Wörter in Buchstaben Java Basics - Anfänger-Themen 2
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
C Problem beim laden eines BufferedImage Java Basics - Anfänger-Themen 2
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
fLooojava Bluetooth Projekt - Problem beim mehrmaligen Senden Java Basics - Anfänger-Themen 5
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
R Problem beim erstellen eines neuen Klassenobjekts Java Basics - Anfänger-Themen 2
F Input/Output Problem beim einlesen eines Strings Java Basics - Anfänger-Themen 3
J Problem beim auslesen von Int Wert aus YML-Datei Java Basics - Anfänger-Themen 6
P Problem beim Abschluss im Kompositum Java Basics - Anfänger-Themen 3
M Problem mit null pinterexception beim laden von Bildern Java Basics - Anfänger-Themen 20
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
J Problem beim ausführen in cmd.exe Java Basics - Anfänger-Themen 4
J Variablen Problem beim einlesen einer Zahl Java Basics - Anfänger-Themen 7
A Problem beim Compilieren Java Basics - Anfänger-Themen 11
J Problem beim Fenster Java Basics - Anfänger-Themen 4
tux20 Problem beim Schreiben von List to File Java Basics - Anfänger-Themen 2
M Problem beim Compilieren Java Basics - Anfänger-Themen 14
Maxim6394 Problem beim Abspielen von Sounds Java Basics - Anfänger-Themen 8
S Problem beim ersten compilieren überhaubt Java Basics - Anfänger-Themen 43
H Problem beim lesen des InputStreams von einem Subprozess Java Basics - Anfänger-Themen 4
Luk10 Problem beim .jar Datei erstellen Java Basics - Anfänger-Themen 19
L Problem beim Ausführen Java Basics - Anfänger-Themen 40
A Problem beim einfügen in eine Datenbank Java Basics - Anfänger-Themen 2
E Problem beim Programmieren eines Kartenspiels Java Basics - Anfänger-Themen 3
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
M Problem beim compilieren Java Basics - Anfänger-Themen 6
JAVAnnik problem beim lvl laden Java Basics - Anfänger-Themen 15
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
W Problem beim erstellen eines Tests Java Basics - Anfänger-Themen 16
JAVAnnik Problem beim Objekt bewegen Java Basics - Anfänger-Themen 20
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
S Problem beim Speichern und Laden von Daten Java Basics - Anfänger-Themen 13
B Problem beim Abspielen einer Videodatei Java Basics - Anfänger-Themen 4
S Problem beim Erstellen eines Scanner-Objekts Java Basics - Anfänger-Themen 7
W Problem beim CSV-Import Java Basics - Anfänger-Themen 5
M Datentypen Problem beim zusammenstellen eines Abfrage-Strings Java Basics - Anfänger-Themen 3
K Collections Problem beim import von Packages Java Basics - Anfänger-Themen 10
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
B Problem beim Email versenden mit Javamail Java Basics - Anfänger-Themen 5
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
I Problem beim Schreiben eines ersten Programms Java Basics - Anfänger-Themen 3
D Problem beim Zeichnen von "Das Haus vom Nikolaus" Java Basics - Anfänger-Themen 10
D Problem beim Auslesen aus File Java Basics - Anfänger-Themen 3
A Problem beim Splitten eines Strings Java Basics - Anfänger-Themen 10
S Problem mit ObjectInputStream beim Einlesen von LinkedList Java Basics - Anfänger-Themen 3
J Problem beim Löschen von elementen aus einer ArrayList Java Basics - Anfänger-Themen 5
V Problem beim Programm laden Java Basics - Anfänger-Themen 5
H Problem beim kompilieren Java Basics - Anfänger-Themen 3
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
T Problem beim Returnwert einer Methode Java Basics - Anfänger-Themen 12
M line.separator: Problem beim Lesen einer Datei Java Basics - Anfänger-Themen 11
Miladriel Problem beim Neuzeichnen nach deiconify Java Basics - Anfänger-Themen 9
R Problem beim Ausführen von Java-PGM aus der shel Java Basics - Anfänger-Themen 3
M Problem beim Ereignishandling mit Menü Java Basics - Anfänger-Themen 2
H problem beim zeichen im JFrame Java Basics - Anfänger-Themen 6
F Problem beim Objekteaufruf... Java Basics - Anfänger-Themen 4
E BlockChallenge: Problem beim löschen der Blöcke Java Basics - Anfänger-Themen 3
H Problem beim Verkürzen von Programm Java Basics - Anfänger-Themen 3
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
M Problem beim Zugriff auf Daten GUI + Startklasse Java Basics - Anfänger-Themen 4
P Problem beim Thread Java Basics - Anfänger-Themen 20
0 problem beim Polygon zeichnen Java Basics - Anfänger-Themen 3
V Problem beim erstellen eines ausführbaren Programs Java Basics - Anfänger-Themen 5
0 Problem beim Starten des Applets Java Basics - Anfänger-Themen 2
N Problem beim Durchsuchen einer LinkedList Java Basics - Anfänger-Themen 5
G Problem beim Programmieren von Blackjack Java Basics - Anfänger-Themen 15
R Problem beim Laden eines Images Java Basics - Anfänger-Themen 7
K Problem beim installieren des JDK 1.6+ version Java Basics - Anfänger-Themen 3
T Problem beim Konsolenstart Java Basics - Anfänger-Themen 5
C Problem beim Berechnen der Quadratwurzel Java Basics - Anfänger-Themen 3
C Problem beim nutzen von Teilprogrammen in main Java Basics - Anfänger-Themen 2
M Problem beim Zeichnen Java Basics - Anfänger-Themen 5
D Problem beim Kompilieren Java Basics - Anfänger-Themen 4
D Problem beim auslesen von TextArea Java Basics - Anfänger-Themen 3
G Problem beim Schreiben in Textdatei Java Basics - Anfänger-Themen 9
F ggT finden - problem beim qc Java Basics - Anfänger-Themen 4
S Problem mit url, inputStream und bytes beim Quellcode laden. Java Basics - Anfänger-Themen 6
G Habe ein Problem mit syn-Editor ( beim compilieren) Java Basics - Anfänger-Themen 4
S Problem beim Verstehen des Quellcodes Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben