Datensturktur sortieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Also

    Wenn du keine lust hast, selber ne Sort-Methode zu schreiben, würde ich einfach die Klasse Comparable implementieren.

    Quellcode

    1. public class Daten implements Comparable{
    2. private float pos;
    3. private String comment;
    4. public String getComment() {
    5. return comment;
    6. }
    7. public void setComment(String comment) {
    8. this.comment = comment;
    9. }
    10. public float getPos() {
    11. return pos;
    12. }
    13. public void setPos(float pos) {
    14. this.pos = pos;
    15. }
    16. public int compareTo(Object otherDaten) {
    17. if(!(otherDaten instanceof Daten)){
    18. throw new ClassCastException("A Daten object expected.");
    19. }
    20. Daten d = (Daten)otherDaten;
    21. if(d.getPos() == pos && d.getComment().equals(comment)){
    22. return 0;
    23. }
    24. else if(d.getPos() < pos){
    25. return 1;
    26. }
    27. else{
    28. return -1;
    29. }
    30. }
    31. public String toString(){
    32. return pos + " " + comment;
    33. }
    34. }
    Alles anzeigen


    Jetzt stellt sich natürlich die Frage der Verwendung:
    1. Eine Liste erstellen und diese mit "Daten" füllen

    Quellcode

    1. List<Daten> list = new ArrayList<Daten>();
    2. list.add();
    3. ...

    2. Die Liste Collections übergeben, die das Sortieren übernimmt

    Quellcode

    1. Collections.sort(list);

    3. Die sortierte Liste ausgeben.

    Wenn man noch Spaß dran hat, kann man vorher noch shuffle drüber laufen lassen

    Quellcode

    1. Collections.shuffle(list);


    Mfg
  • nutze besser die tollen sprachkonzepte von java5...
    Was für eine IDE nutzt du? Eclipse?

    Da brauchst du einfach nur implements Comparable anzuhängen. Zweimal auf die Fehlermeldung "there are unimplemented methods" klicken und schon hast du das Grundgerüst drinne

    Aber cr4ch hat dir den Code ja schon fertig gemacht. So ist er super zu verwenden.
  • Moin

    Nicht dass ich wüsste, dass man angeben könnte ob asc oder desc.
    Ist auch im Grunde ... egal.
    Wenn du später durch die liste läufst, fängst du entweder bei 0 an (asc)

    Quellcode

    1. for(int i = 0; i < list.size(); i++)

    oder bei list.size() (desc)

    Quellcode

    1. for(int i = list.size() - 1; i >= 0; i--)


    Was hast du denn Collections.sort() übergeben?
    Ein Array oder ein List Objekt?
  • Die Methode funktioniert meines Wissens nur mit nem List-Object
    Versuchs mal damit. Sollte ohne weiteres klappen und ne wirklich andere Handhabung hat ne Liste ja auch nicht.

    Quellcode

    1. List myList = new ArrayList();
    2. bzw.
    3. List<Daten> myList = new ArrayList<Daten>();
    4. und dann nur noch
    5. list.add()
    6. oder
    7. list.get()


    Vorteil bei List ist vor allem, dass es eine dynamische Größe hat. Brauchst dir also keine sorgen zu machen, ob List irgendwann voll ist (mehr oder minder)