Страницы

Поиск по вопросам

среда, 1 января 2020 г.

Java ArrayList sort в ранних версиях

#java #android #сортировка #arraylist


Пытаюсь отсортировать ArrayList. Жалуется, что в api не поддерживается compare. Как
можно выполнить сортировку в более ранних версиях андроида?

Collections.sort(MyList, new Comparator() { 
    @Override
    public int compare(MyModel o1, MyModel o2) {
        return Boolean.compare(o1.isDeleted(),o2.isDeleted());
    }
});

    


Ответы

Ответ 1



Метод: public static int compare (boolean x, boolean y) класса Boolean стал доступен в API level 19. На более ранних версиях можно использовать метод: public int compareTo (Boolean b) этого же класса, который доступен начиная с API level 1. Пример: boolean b1 = true; boolean b2 = false; int result = Boolean.valueOf(b1).compareTo(b2); В Вашем случае: Collections.sort(MyList, new Comparator() { @Override public int compare(MyModel o1, MyModel o2) { return Boolean.valueOf(o1.isDeleted()).compareTo(o2.isDeleted()); } }); Или же можно написать свою реализацию сравнения, так как в данном случае это довольно просто.

Ответ 2



Collections.sort(MyList, new Comparator() { @Override public int compare(MyModel o1, MyModel o2) { return (o1.isDeleted() == o2.isDeleted()) ? 0 : (o1.isDeleted() ? 1 : -1); } });

Комментариев нет:

Отправить комментарий