2009-08-25 6 views
1

Je dois trier ArrayList qui consiste en des objets. Objet: ID, Quantité. Le ArrayList doit être trié par ID. Comment mettre en œuvre cela?Tri de l'objet ArrayList

ItemIdQuantity = new ItemIdQuantity (ID, Quantity); 

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

PascalCase 'Sort' est un indice de C# et non de Java. –

Répondre

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

Je mets la première ligne de votre code dans une nouvelle classe dans Eclipse et il se plaint tout d'abord de ':' en disant qu'il attend étendu, et puis quand je mets cela, IComparer se plaint ne peut pas être résolu en un type. Où vais-je mal? – volvox

+0

'public class IdComparer implémente Comparator {' semble être correct, mais j'aimerais quand même comprendre votre syntaxe. Merci – volvox

+0

@Mark: La version originale de la question n'avait pas le tag Java. Apparemment, un tiers a ajouté une telle étiquette. J'ai répondu en supposant que la langue est C#. –

1

Si l'on suppose que ce Java:

  • Si la classe ItemIdQuantity implémente Comparable en fonction du champ d'ID, utilisez Collections.sort() avec la liste en tant que paramètre unique.
  • Sinon, implémentez un Comparator qui compare les objets à l'aide de leur ID et l'utilise en tant que second paramètre pour Collections.sort().