2017-02-17 12 views
0

Мой списокандроид сортировать ArrayList в соответствии с OBJ данных

ArrayList<MyList> list = new ArrayList<MyList>(); 
//  name - order - info 
list.add("Book ...", "1", "blah blah); 
list.add("Book ...", "10", "blah blah); 
list.add("Book ...", "11", "blah blah); 
list.add("Book ...", "2", "blah blah); 

Я хочу, чтобы отсортировать список в соответствии с его положением в 2 секунды OBJ

Затем я попытался

Collections.sort(list); 

Список Calss

public class MyList implements Comparable<MyList> { 

... 

    @Override 
    public int compareTo(@NonNull MyList content) { 
     return Integer.parseInt(content.getOrder()); 
    } 
} 

ответ

1

Вы необходимо Comparator здесь.

Этот сравнивает два элементов и возвращает -1, 0 или 1; если первая запись меньше, равна, больше, чем вторая.

Но вы должны сделать еще один шаг: кажется, что вы пытаетесь моделировать определенные данные - тогда не используйте квартиру Класс списка MyList. Создайте класс, который действительно модели ваши данные; возможно BookRecord; который имеет поля, такие как String name, или int id.

3

Вы можете передать объект Comparator методу sort.

Collections.sort(list, new Comparator<MyList>() { 
    @Override 
    public int compare(MyList m1, MyList m2) { 
     return m1.getOrder() - m2.getOrder(); 
    } 
}); 

Если вы используете java 8, вы можете это сделать.

Collections.sort(list, (MyList m1, MyList m2) -> 
            m1.getOrder() - m2.getOrder())); 
+1

Ницца! Таким образом, вы можете делать разные сравнения в разных обстоятельствах! Милая! –

1

Сделайте свой метод compareTo выглядеть следующим образом:

public int compareTo(MyList o) { 
     return this.getOrder() - o.getOrder(); 
    } 
2
ArrayList<MyList> list = new ArrayList<MyList>(); 
    //  name - order - info 
    list.add("Book ...", "1", "blah blah); 
    list.add("Book ...", "10", "blah blah); 
    list.add("Book ...", "11", "blah blah); 
    list.add("Book ...", "2", "blah blah); 

    Collections.sort(list, new Comparator<MyList>() { 
     @Override 
     public int compare(MyList m1, MyList m2) { 
      return m1.getOrder() - m2.getOrder(); 
     } 
    }); 

теперь проверяют ваш список в порядке возрастания.