tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Anime-Otaku
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1249
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    wuaschtikus wuaschtikus ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    11
    Liebe Forummitglieder,

    Ich muss eine ArrayList mit GeoDaten und Timestamps nach Timestamp sortieren. Nach meiner Recherche müsste das mit dem Comperator gehen... Nur leider fehlt mir ein bisschen die Ahnung von den Compare Sachen bzw. kann ich mir das nicht ganz vorstellen wie das in der Theorie aussieht.

    Was muss ich also tun? Ich bin eig. kein Anfänger mehr aber da hänge ich irgendwie komplett - ich wäre dankbar für ein bisschen Hilfe. Ich weiß es gibt relativ viele Threads dazu - ich will aber auf Nummer sicher gehen und meine eigenen Fragen stellen.

    Die Klasse in der ich die ArrayList sortieren will:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    import java.util.*;
    public class DateSort{
        static final Comparator<GeoDaten> GEO_ORDER =
                                     new Comparator<GeoDaten>() {
            public int compare(GeoDaten g1, GeoDaten g2) {
                return g1.getDate.compareTo(g2.getDate()); //getDate() returns Date() of active GeoObject
            }
        };
     
     
        public static void main(String[] args) {
            List<GeoDaten>g = getGeoDaten(); //returns ArrayList with Geodata
            Collections.sort(g, GEO_ORDER);
            List<GeoDaten> sortedGeodata = g;
        }
    }

    Meine Fragen:
    Ist das alles?
    Mit compareTo() bekomm ich die Werte 1 oder -1? Das reicht aus um die ArrayList zu sortieren? Oder muss ich noch was machen?

    Danke im Voraus!
    lg Martin
    Geändert von wuaschtikus (16.05.11 um 11:18 Uhr)
     

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    868
    Wenn dein Comparator die richtigen Werte ausgibt (hab ich nicht nachgeprüft), dann ist das alles.

    Du solltest allerdings in Zeile 6 noch nach g1.getDate die Klammern () für den Methodenaufruf einfügen.
    Code java:
    1
    
     return g1.getDate().compareTo(g2.getDate()); //getDate() returns Date() of active GeoObject

    PS: Schau doch mal in die JavaDoc von Comparator und der Methode compareTo() aus dem Interface Comparable. Wenn du dir immer noch unsicher bist, schau mal http://openbook.galileocomputing.de/...sel_09_001.htm und http://openbook.galileocomputing.de/...83dfce865d017e an.
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  3. #3
    wuaschtikus wuaschtikus ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    11
    ok und nur zum verständnis - der Comperator liefert NUR die vergleichswerte mit return comperTo() zurück. Das sortieren wird dann von sort() übernommen.

    In meiner GeoDaten Klasse muss ich nichts explizit angeben oder deklarieren?
    Hier kommt es nur auf die getDate() Methode an, sehe ich das richtig?
     

  4. #4
    Anime-Otaku Anime-Otaku ist offline Mitglied Brillant
    Registriert seit
    Aug 2005
    Ort
    Karlsruhe (Baden-Württemberg)
    Beiträge
    905
    Das ist so korrekt. CompareTo liefert nur <0; =0;>0 zurück. Und sort benutzt dann einen bestimmten Algorithmus (Mergesort) der diese Information benutzt.

    Wenn du eine grundsätzliche Sortierung für deine GeoDaten-Klasse machen willst, musst du das Interface Comparable in der Klasse GeoDaten implementieren. Und du solltest dann auch die equals und hashCode-Methode implementieren, damit compareTo == 0 und equals das gleiche Ergebnis liefern.
    wuaschtikus bedankt sich. 
    Wäre super wenn ihr euren Code in dieser Form einfügt:
    Code java:
    1
    
    System.out.println("Hello World");
    [java]System.out.println("Hello World");[/java]
    Für erledigte Threads dürft ihr den "erledigt"-Button anklicken!
    Über Dank freut sich jeder, der euch geholfen hat - ein Klick auf "Danke" kostet ja nicht mal was
    Blog: http://javaeffective.wordpress.com/

  5. #5
    wuaschtikus wuaschtikus ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    11
    Vielen dank dir das wars
    kenn mich jetz aus.
     

Ähnliche Themen

  1. ArrayList absteigend sortieren
    Von LeeroyJenkins im Forum Java Grundlagen
    Antworten: 7
    Letzter Beitrag: 15.05.10, 20:26
  2. Sortieren von Klassen in ArrayList
    Von mp89 im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 4
    Letzter Beitrag: 24.03.09, 21:21
  3. Day CQ - ArrayList sortieren und filtern
    Von aquasonic im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 22.12.06, 15:49
  4. Mehrere ArrayList sortieren
    Von Sergunja im Forum Java
    Antworten: 8
    Letzter Beitrag: 20.10.04, 12:47
  5. ArrayList sortieren
    Von mgd-one im Forum .NET Archiv
    Antworten: 8
    Letzter Beitrag: 31.01.04, 14:40

Stichworte