【发布时间】:2018-05-30 15:38:02
【问题描述】:
public class Leaderboard extends RealmObject {
String score;
}
RealmResults<Leaderboard> leaderboardList = realm.where(Leaderboard.class).distinct("score").findAll();
结果是Strings,实际上只是存储为String 的大数字,因为Realm 不支持BigInteger。我需要做的是按数字顺序输出这些数字。
无法使用Collections(sort),因为min sdk 为 16。使用 StreamSupport lib 也没有运气。我目前正在尝试将RealmResults 转换为一个简单的字符串数组,这样我就可以对其进行排序,但我遇到了麻烦。以下会导致转换错误,但即使在更改之前会导致 ldrStrings.get(0) 输出类似 proxy[((75000))] 的内容,这是实数,但被该文本包围:
RealmResults<Leaderboard> leaderboardList = realm.where(Leaderboard.class).distinct("score").findAll(); Leaderboard[] leaderboardArray = (Leaderboard[]) leaderboardList.toArray(); List<String> ldrStrings = new ArrayList(leaderboardArray.length); for (Object object : leaderboardArray) { ldrStrings.add(object != null ? object.toString() : null); } Collections.sort(ldrStrings, new Comparator<String>() { @Override public int compare(String o1, String o2) { BigInteger bi1 = new BigInteger(o1); BigInteger bi2 = new BigInteger(o2); return bi1.compareTo(bi2); } });
【问题讨论】:
-
我们在谈论多少个对象?您很可能需要预先加载
Leaderboard表才能使其正常工作。 -
排行榜中只有一个对象得分。仅迭代 5 次(显示前 5 个分数)
标签: java android realm realm-java