【问题标题】:Java android sort List java object by doubleJava android按双倍列出Java对象
【发布时间】:2017-08-07 05:55:24
【问题描述】:

Hi 我有一个 List java 对象,其中一个字段是 Double distance,我想按此字段对列表进行排序。而且它不能正常工作。

我这样做:

Collections.sort(rows, new Comparator<AdapterRooteEntity>() {
    @Override
    public int compare(AdapterRooteEntity o1, AdapterRooteEntity o2) {
        // return o1.getAddress().compareTo(o2.getAddress());
        // return Double.compare(Tools.distance(o1.getLat(),
        // gps.getLatitude(), o1.getLon(), gps.getLongitude() ),
        // Tools.distance(o2.getLat(), gps.getLatitude(), o2.getLon(),
        // gps.getLongitude() ));
        return Double.compare(o1.getDistance(), o2.getDistance());
    }
});

【问题讨论】:

  • 当你说它不能正常工作时,是什么问题?
  • 这段代码有什么问题?
  • @kapsym 我在按距离排序后放置了一个屏幕。我不知道为什么对一些对象进行这种排序不正确
  • @ΦXocę웃Пepeúpaツ 我得到有错误的排序列表
  • 你的图片是按降序排列的... 什么错误?预期的输出是多少?

标签: java android sorting collections


【解决方案1】:

您可以通过一种非常简单的方式对列表进行排序,方法是在将每个项目添加到列表时将它们插入到正确的位置。

public void sortedInsert(Item item){
    for ( int i = 0; i< yourList.size(); i++) {
        if ( item.getDistance() < yourList.get(i).getDistance()){
            yourList.add(i, item);
            return;
         }
    }
    // If the item hasn't been inserted
    yourList.add(item);
}

【讨论】:

    【解决方案2】:

    确保o1.getDistance()返回Double,如果不是,使用Double.parse(o1.getDistance())作为o1和o2。

    【讨论】:

      猜你喜欢
      • 2013-03-30
      • 2012-10-31
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多