2009-08-25 5 views
1

Мне нужно отсортировать ArrayList, который состоит из объектов. Объект: идентификатор, количество. ArrayList следует сортировать по идентификатору. Как это реализовать?Сортировка объекта ArrayList

ItemIdQuantity = new ItemIdQuantity (ID, Quantity); 

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

PascalCase 'Sort' - это ключ, это C#, а не Java. –

ответ

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

Я помещаю первую строку вашего кода в новый класс в Eclipse, и сначала он жалуется на «:», заявляя, что он ожидает расширения, а затем, когда я его вставляю, он жаловался, что IComparer не может быть разрешен для типа. Где я иду не так? – volvox

+0

'public class IdComparer реализует Comparator {' выглядит нормально, но я все равно хотел бы понять ваш синтаксис. Спасибо – volvox

+0

@Mark: В исходной версии вопроса не было тега Java. По-видимому, третья сторона добавила такой тег. Я ответил, предполагая, что язык C#. –

1

Предполагая, что это Java:

  • Если ItemIdQuantity класс реализует Comparable на основе поля ID, используйте Collections.sort() со списком в качестве единственного параметра.
  • В противном случае выполните команду Comparator, которая сравнивает объекты с использованием их идентификатора и использует его как второй параметр для Collections.sort().
Смежные вопросы