java - Java 7中的Java领域结果排序?
问题描述
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); } });
解决方案
对于后代:这个问题被过度思考了。这是采用 RealmResults 列表、将结果迭代到字符串数组、将字符串转换为 BigInteger 并将它们从最大到最小排序的解决方案。
RealmResults<Leaderboard> leaderboardList = realm.where(Leaderboard.class).distinct("score").findAll();
List<String> strings = new ArrayList<>();
for(int i = 0; i < leaderboardList.size(); i++) {
strings.add(leaderboardList.get(i).getScore());
}
Collections.sort(strings, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
BigInteger bi1 = new BigInteger(o1);
BigInteger bi2 = new BigInteger(o2);
return bi2.compareTo(bi1);
}
});
推荐阅读
- python - Tensorflow Tf.tf.squared_difference 显示密集层的值错误
- parallel-processing - 并行运行 Sas 宏
- c++ - 为什么 ++ 运算符触发器返回对局部变量警告的引用
- c# - SSRS LocalReport 渲染非常慢
- javascript - 如何修复提交按钮激活错误?
- java - springboot可以将组件初始化为线程吗?
- c# - Excel文件导出没有任何错误
- javascript - Firefox 下载标签超链接不起作用
- python - Python threading.Condition.notify_all() 未触发下一个线程
- node.js - 无法使用 multer 获取临时文件路径