如何将数字数组从高到低排序(反向/降序)?

时间:2019-08-28 19:23:56

标签: android

如何按数字从高到低的顺序对数组进行排序。

数组

ArrayList<TestClass> array1 = new ArrayList<>();

Class

public class TestClass{

   public boolean type;
   public int counter;

   public TestClass(boolean type, int counter) {
       this.type = type;
       this.counter = counter;
   }
}

我尝试这样做

Collections.sort(array1);

但是我遇到了错误

  

原因:不存在类型变量T的实例,以使TestClass符合Comparable

2 个答案:

答案 0 :(得分:1)

假设您没有任何辅助方法,则可以使用

array1.sort(Comparator.comparing(a -> a.counter));

您要求的排序顺序是反向顺序,有两种方法可以实现。

您可以像

那样简单地做与上一类相反的操作
array1.sort(Comparator.comparing(a -> a.counter));
array1.sort(Collections.reverseOrder());

如果您不能使用Comparator.comparing,则可以执行以下操作

Collections.sort(array1, (item1, item2) -> Integer.compare(item2.counter, item1.counter));

上面的陈述可以解释如下。

    Collections.sort()提供
  • Java collections framework

  • 第一个参数指定需要对哪个集合进行排序。

  • 第二个参数描述了集合中的每个对象应如何 与其他对象进行比较。因此,对于每对对象,在这里是整数,如果第二个元素大于第一个元素,则条件返回true。这将使整个列表从上到下显示

答案 1 :(得分:0)

arrayList.sort(new Comparator<TestClass>() {
        @Override
        public int compare(TestClass testClass, TestClass t1) {
            return Integer.compare(t1.counter, testClass.counter);
        }
    });