2012-05-14 2 views
2

у меня есть Фруктовый класс модели:Сортировка списка объектов interms от имени объекта

public class Fruit{ 
    private String name; 
    private String color; 

    public Fruit(String name, color){ 
    this.name = name; 
    this.color = color; 
    } 
    public getName(){ 
     return name; 
    } 
    public getColor(){ 
     return color; 
    } 
} 

Затем я создал список fruits:

List<Fruit> fruits = new ArrayList<Fruit>(); 

fruits.add(new Fruit("Orange","orange")); 
fruits.add(new Fruit("Strawberry","red")); 
fruits.add(new Fruit("Apple","green")); 
fruits.add(new Fruit("Banana","yellow")); 

Теперь я хотел бы разобраться fruits элементов в в алфавитном порядке с точки зрения название плода. Как я могу эффективно сортировать список фруктов?

ответ

2

использовать следующие

Collections.sort(fruits); 

public class Fruit implements Comparable { 

    public int compareTo(Object o) {    
     Fruit f = (Fruit) o; 
     return this.getName().compareTo(f.getName()); 
    } 

} 
+0

Ему также необходимо реализовать Comparable (или поставить пользовательский компаратор). –

+0

@GregKopff: Спасибо. Я обновляю свой ответ. – sarwar026

+0

Я хотел бы сравнить с точки зрения fruit.name, это сортировка списка в алфавитном порядке имени. как его следует сравнивать? –

3

Вы можете использовать Collections.sort(), определяя Comparator. Например:

Collections.sort(
    fruits, 
    new Comparator<Fruit>() 
    { 
     public int compare(Fruit f1, Fruit f2) 
     { 
      // Ignore case for alphabetic ordering. 
      return f1.getName().compareToIgnoreCase(f2.getName()); 
     } 
    }); 
0
public class Fruit implements Comparable<Fruit> { 
{ 
    public int compareTo(Fruit f) { 
     if (this.Name == f.Name) 
      return 0; 
     else if (this.Name > f.Name) 
      return 1; 
     else 
      return -1; 
    } 
} 

Используйте это так:

Collections.sort(fruits); 
+0

Я не уверен, что отличная идея для фруктов иметь принудительный естественный порядок. –

0
public Comparator<Fruit> fruitComparator = new Comparator<Fruit>() { 
     @Override 
     public int compare(Fruit f1, Fruit f2) { 

      return f1.getName().compareTo(f2.getName()); 
     } 
    }; 

, а затем :

Collections.sort(fruits, fruitComparator); 
Смежные вопросы