lina-: Vergleich von Objekten

Beitrag lesen

moin MrWurf :)

hier also mein Vorschlag:
Soweit ich dich verstanden habe, willst du eine Menge von Order-Objekten ausgeben, in der keine Order doppelt vorkommen soll. Ausserdem sollen die Orders noch irgendwie sortiert werden.

Ohje - nein - da hast du mich falsch verstanden :/ bzw. habe ich die falschen Ausdrücke verwendet.
Ich möchte zwei Order-Objekte nur auf Gleichheit testen (wie ich gelernt habe ist das nicht gleichzusetzen mit "vergleichen")

Dazu nehme ich einfach mal an: (korrigiere mich wenn ich falsch liege)

  • die Orders haben eine eindeutige Bestellnummer,

richtig

  • die Orders haben ein Datumseintrag, nach dem du sortieren willst,

falsch - es gibt keinerlei Ordnung in den Orderobjekten.

Zum Sortieren implementierst du das Comparable-Interface an der Order, und sortierst die Values der oben gefüllten Hashtable mit
Vector sortme = new Vector(orderhash.values());
Collections.sort(sortme);
Der Vector sortme enthält nun die eindeutigen sortierten Orders.

Dieser Sachverhalt ist mir bei den User-Objekten über den Weg gelaufen - aber gelöst habe ich ihn anders. Und zwar habe ich mir eine Klasse UserComparator gebastelt, die ich so aufrufe: Collections.sort(users, new UserComparator(orderByDesc));
"users" ist hier die Liste die schliesslich die sortierten User enthält.

Nur der Vollständigkeit halber möchte ich hier noch meine Comparator-Klasse zeigen. Falls ihr hier Unstimmigkeiten findet, sagt mir doch bitte bescheid (bin jetzt ein wenig verunsichert wegen deines Lösungsweges)

public class UserComparator implements Comparator {  
  private String             orderBy;  
  public static final String ORDERBY_NAME= "name";  
  public static final String ORDERBY_NUMBER   = "number";  
  
  public UserComparator(String attribute) {  
    this.orderBy = attribute;  
  
  }  
  public int compare(Object o1, Object o2) {  
    if (o1 != null && o2 != null && orderBy != null && o1 instanceof User  
        && o2 instanceof User) {  
      if (ORDERBY_NUMBER.equals(orderBy)) {  
        return ((User) o1).getNumber().compareTo(((User) o2).getNumber());  
      }  
       else if (ORDERBY_NAME.equals(orderBy)) {;  
        return ((User) o1).getNumber().compareTo(((User) o2).getNumber());  
      }  
    }  
    return 0;  
  }  
}

liebe Grüße aus Berlin
lina-

--
Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)