2009-08-25 3 views
1

Ich muss ArrayList sortieren, die aus Objekten besteht. Objekt: ID, Menge. Die ArrayList sollte nach ID sortiert sein. Wie implementiert man das?ArrayList Objektsortierung

ItemIdQuantity = new ItemIdQuantity (ID, Quantity); 

ItemIdQuantity.Sort(); // where must be sorting by ID 
+0

PascalCase 'Sort' ist ein Hinweis, es ist C# und nicht Java. –

Antwort

2
public class IdComparer : IComparer { 
    int IComparer.Compare(object x, object y) { 
     return Compare((ItemIdQuantity)x, (ItemIdQuantity)y); 
    } 
    public int Compare(ItemIdQuantity x, ItemIdQuantity y) { 
     return x.ID - y.ID; 
    } 
} 

arrayList.Sort(new IdComparer()); 
+0

Ich habe die erste Zeile Ihres Codes in eine neue Klasse in Eclipse und es beschwert sich zuerst über ':' sagen, dass es erwartet, erweitert, und dann, wenn ich das in, beschwert IComparer kann nicht in einen Typ aufgelöst werden. Wo gehe ich falsch? – volvox

+0

'öffentliche Klasse IdComparer implementiert Comparator {' scheint in Ordnung zu sein, aber ich würde immer noch gerne Ihre Syntax verstehen. Danke – volvox

+0

@Mark: Die ursprüngliche Version der Frage hatte nicht das Java-Tag. Anscheinend hat eine dritte Partei ein solches Tag hinzugefügt. Ich antwortete, dass die Sprache C# ist. –

1

Unter der Annahme, dass diese Java ist:

  • Wenn die ItemIdQuantity Klasse Comparable implementiert basierend auf dem ID-Feld, als einzelne Parameter Collections.sort() mit der Liste verwenden.
  • Andernfalls implementieren Sie eine Comparator, die die Objekte vergleicht, die ihre ID verwenden, und sie als zweiten Parameter zu Collections.sort() verwenden.