【问题标题】:Sort RealmResults strings numerically?对 RealmResults 字符串进行数字排序?
【发布时间】:2018-05-29 21:25:17
【问题描述】:

我需要对 String 的列表进行排序,它们实际上是很大的数字(必须使用它,因为 Realm 不支持 BigInteger

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排序时按该顺序显示

我实际上需要对它们进行正确排序,并且无法通过CollectionRealmResults 列表获得任何解决方案。在使用RealmResultstoArray() 方法时也遇到了问题,因为在所有情况下,我不理解的不同类型都有一些问题。

不胜感激,谢谢!

【问题讨论】:

标签: java android realm realm-java


【解决方案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());

【讨论】:

  • stream() , sorted() ,collect()Collectors.toList() 不幸的是都需要 api 24(最小为 16)
  • @zngb 啊,对不起。您没有指定...我想您可以手动将它们复制到列表中并对其进行排序?
  • 我试过了,但遇到了那些不兼容的问题。你有我可以尝试的例子吗?谢谢
  • 如果不能使用流,请使用静态方法Collections.sort(); 应用比较器
猜你喜欢
  • 2012-11-14
  • 2013-06-05
  • 1970-01-01
  • 2016-07-18
  • 2014-12-07
  • 1970-01-01
相关资源
最近更新 更多