首页 > 解决方案 > 对 RealmResults 字符串进行数字排序?

问题描述

我需要对这个String实际上是大数字的列表进行排序(必须使用它,因为BigIntegerRealm 不支持)

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因为在所有情况下,我不理解的不同类型都有一些问题。

将不胜感激任何帮助,谢谢!

标签: javaandroidrealmrealm-java

解决方案


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());

推荐阅读