Сортировать строки RealmResults численно?

Мне нужно отсортировать этот список String, которые на самом деле являются большими числами (пришлось использовать это, поскольку BigInteger не поддерживается Realm)

RealmResults<Leaderboard> leaderboardList = realm.where(Leaderboard.class).distinct("score").findAll().sort("score",Sort.DESCENDING);

Результатом является 5 Strings со следующими числами:
75 000
74 990
6 079 990
5 006 079 990
1 079 990

которые отображаются в этом порядке при сортировке по Sort.DESCENDING

Мне нужно правильно их отсортировать, и я не могу найти решение, когда Collection работает со списком RealmResults. Также возникают проблемы с использованием метода toArray() из RealmResults, поскольку во всех случаях возникают проблемы с различными типами, которые я не понимаю.

Буду признателен за любую помощь, спасибо!


person zngb    schedule 29.05.2018    source источник
comment
Попробуйте Collator, если он доступен javapractices.com/topic/TopicAction.do?Id=207   -  person LMC    schedule 30.05.2018


Ответы (1)


RealmResults реализует java.util.Collection, так что нельзя просто написать

Comparator<Leaderboard> descendingScore = (l1, l2) ->
       (new BigDecimal(l2.getScore()).compareTo(new BigDecimal(l1.getScore()));
List<Leaderboard> leaderboardList = realm.where(Leaderboard.class)
    .distinctValues("score")
    .findAll()
    .stream()
    .sorted(descendingScore)
    .collect(Collectors.toList());
person DavidW    schedule 29.05.2018
comment
stream() , sorted() , collect() и Collectors.toList() все требуют API 24 (минимум 16) к сожалению - person zngb; 30.05.2018
comment
@zngb А, извини. Вы не указали... Я полагаю, вы могли бы просто скопировать их в список вручную и отсортировать? - person DavidW; 30.05.2018
comment
Я попробовал это и получил эти проблемы несовместимости ... у вас есть пример того, что я мог бы попробовать? Спасибо - person zngb; 30.05.2018
comment
Используйте статический метод Collections.sort(); для применения компаратора, если вы не можете использовать потоки - person Maelig; 02.08.2018