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

265
11 октября 2017, 06:15

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

Collections.sort(MyList, new Comparator<MyModel>() { 
    @Override
    public int compare(MyModel o1, MyModel o2) {
        return Boolean.compare(o1.isDeleted(),o2.isDeleted());
    }
});
Answer 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<MyModel>() {
    @Override
    public int compare(MyModel o1, MyModel o2) {
        return Boolean.valueOf(o1.isDeleted()).compareTo(o2.isDeleted());
    }
});

Или же можно написать свою реализацию сравнения, так как в данном случае это довольно просто.

Answer 2
Collections.sort(MyList, new Comparator<MyModel>() { 
    @Override
    public int compare(MyModel o1, MyModel o2) {
        return (o1.isDeleted() == o2.isDeleted()) ? 0 : (o1.isDeleted() ? 1 : -1);
    }
});
READ ALSO
OutputStream java

OutputStream java

Как записать число double в байтовый поток?

198
javax.persistence.EntityNotFoundException: Unable to find &#39;ENTITY&#39; with id

javax.persistence.EntityNotFoundException: Unable to find 'ENTITY' with id

Имею три сущности: Database, Table, FieldСвязаны они отношением one-to-many

347
JAXB, ExceptionInInitializerError

JAXB, ExceptionInInitializerError

Класс DataObject

307