Java Realm 结果在 Java 7 中排序?

标签 java android realm realm-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);
            }
        });

关于Java Realm 结果在 Java 7 中排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50608663/

相关文章:

java - 如何在 Android 应用程序中阻止或改善横向 View

android - 在android中断电持久存储

java - Junit - AssertArrayEquals 不适用于用户定义的对象(非原始数据类型)

java - 如何使用 java 在 Windows 操作系统中检测工作站/系统屏幕锁定/解锁?

android - 为什么链元素之间的空间如此之大?

android - 存储 SendBird channel 列表 - Android

ios - "Thread 1: signal SIGABRT"与 Realm 和 Swift

ios - 来自服务器的数据库中的 Realm 更新结果

java - ArangoDB:Spring 数据和图形模型支持

运行 java -jar 时未绘制 Java 图像