当前位置: 首页 > 知识库问答 >
问题:

无法在Android系统中使用比较器对数据进行排序

乐正玺
2023-03-14

我正在尝试制作一个代码来按照以下顺序对我的列表中的数据进行排序,并且知道我必须使用比较器,但是我不知道如何将以下逻辑实现到比较器中。一些帮助或示例会很棒!我很想收到你的来信。

final private ArrayList<BookItem> books = new ArrayList<>();

Collections.sort(books, compareBooks);

我希望列表的排序方式如下

显示顺序

  1. sort_order编号越低,显示的项目越新
  2. start_date的日期越高,显示的项目越高。
  3. ID值越大,项目将
private Comparator<BookItem> compareBooks = (o1, o2) -> {
    if (o1.sort_order == BookItem.ORDER && o2.sort_order != BookItem.ORDER) {
        return -1;
    } else if (o1.start_date != BookItem.START && o2.start_date == BookItem.START) {
        return 1;
    } else if (o1.ID == BookItem.ID && o2.ID == BookItem.ID) {
        return 0
    } 
};

共有1个答案

子车凌龙
2023-03-14

我会像在排序属性列表中那样一步一步地做

    < li >排序顺序号越低,项目将显示得越新 < Li > start _ date的日期越大,项目将显示得越高 < Li > ID值越大,项目就越大

一个

 private Comparator<BookItem> compareBooks = (o1, o2) -> {
    int result =o1.sort_order - o2.sort_order
    if(0==result){
      result=o1.start_date.compareTo(o2.start_date);
    }
    if(0==result){
      result=o1.ID-o2.ID;
    }
 };

很可能我搞砸了你至少一个属性的顺序,但这个想法应该很清楚。

 类似资料:
  • 所以我正在使用一些预先存在的比较器,它们比较两个元组中的某些值,如果第一个大于第二个,则返回true,否则返回false。这是其中之一的代码: 现在,我有一个字典,里面有许多上面比较的类型的元组条目。我想以相反的顺序对它们进行排序,但我真的不知道如何完成。我在想这样的事情: 但是我不知道向比较器传递什么,因为每个比较器都有两个参数(subInfo1、subInfo2)。我不能更改比较器函数。

  • 我一直在做拼字游戏作业。我需要从列表中读取单词,然后读取每个字符并赋值,最终为每个单词分配一个总分。已经完成了!唷。现在我需要使用比较器将单词从最高分到最低分进行排序。读了很多,还是很迷茫。我知道我可以使用接口,但也有使用lambda表达式的比较器,这是我想去的方向。我只是不知道该怎么做。我需要比较每个单词的sumValue,然后按降序打印单词。 我创建了 2 个循环来读取单词 (i),然后是字符

  • 我正试图根据员工的加入日期对他们的列表进行排序。下面是我的员工类。 下面是我的比较器类:

  • 问题内容: 说,我们有以下二维数组: 应该如何声明Java 类以使用降序按数组的第一个元素对数组进行排序?供参考的功能是: 问题答案: […]应该如何声明Java Comparator类以按其降序将数组的第一个元素排序 […] 这是使用Java 8的完整示例: 输出: 对于Java 7,你可以执行以下操作: 如果你不幸无法在Java 6或更早版本上运行,请执行以下操作:

  • 我需要测试的地方 有人能告诉我如何使用main中的getCompByName()按名称对ArrayList进行排序吗?我对比较器很陌生,对它们的用法很难理解。该方法返回一个比较器,所以我不确定这将如何实现。我知道我需要使用getCompByName()来排序,我只是不知道如何实现它。

  • 问题内容: 尝试根据元素字符串长度对数组进行排序时,我被编译错误震惊。我有一套开始, 我理想地想排序 所以我有一个比较器类型 然后我打电话给全班 但随后,它引发了两个编译错误: 任何解决问题的线索,我将不胜感激。 问题答案: 您需要指定一个类型参数,以使实现生效。 在Java 1.7和更高版本中,您还可以将此方法的主体简化为: 另外,对对象进行排序。由于要对数组进行排序,因此应使用: