代码之家  ›  专栏  ›  技术社区  ›  Alireza Noorali Pedro Gonzalez

按长属性排序对象列表

  •  2
  • Alireza Noorali Pedro Gonzalez  · 技术社区  · 6 年前

    可以使用集合.sort(object)这样:

    Collections.sort(priceList, new Comparator<MyObject>() {
        @Override
        public int compare(MyObject o1, MyObject o2) {
            return Integer.parseInt(o1.getPrice()) - Integer.parseInt(o2.getPrice());
        }
    });
    

    Long.compare 在API 19及更高版本中,可以使用集合.sort(对象):

    Collections.sort(priceList, new Comparator<MyObject>() {
        @Override
        public int compare(MyObject o1, MyObject o2) {
            return Long.compare(o2.getPrice(), o1.getPrice());
        }
    });
    

    但是 minSdkVersion 16 而且我的价格值超过了int范围的最大值!!!

    我怎样才能把我的物品 long API 16级及更高级别的属性?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Amit Bera    6 年前

    看看 Long#compare

    public static int compare(long x, long y) {
        return (x < y) ? -1 : ((x == y) ? 0 : 1);
    }
    

    同样,你也可以 return 1 0 如果等于和 -1

    Collections.sort(priceList, new Comparator<MyObject>() {
        @Override
        public int compare(MyObject o1, MyObject o2) {
           return (o1.getPrice() < o2.getPrice()) ? -1 : ((o1.getPrice() == o2.getPrice()) ? 0 :1 );
    });
    
        2
  •  1
  •   Dinesh    6 年前

    您可以如下实现compare方法。这应该能解决你的问题。

    public int compare(MyObject o1, MyObject o2) {
                    return o1.getPrice() < o2.getPrice ?-1 :(o1.getPrice == o2.getPrice ?0 :1);
    
    }