android - 无法在android中使用比较器对数据进行排序

标签 android algorithm sorting comparator

我正在尝试编写代码以按以下顺序对我的列表的数据进行排序,并且知道我必须使用比较器,但是我不知道如何在比较器中实现以下逻辑。一些帮助或例子会很棒!我很想听听你的意见。

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. sort_order 编号越低,显示的项目越新
  2. start_date的日期越靠前
  3. 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;
    }
 };

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

关于android - 无法在android中使用比较器对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739794/

相关文章:

c# - 有没有更简洁的方法可以在 C# 中进行排序?

c# - 对 XDocument 中的所有元素进行排序

algorithm - 评估和计算 Top-N 精度 : Top 1 and Top 5

algorithm - 更好的算法和更好的 Big O

python - 解析 ad-hoc 树

Android:保存试用申请信息

C# - 当每个 'row' 有多个值时对列表进行排序?

java - 更新 Cardview 布局后,Listview Onclick 监听器不工作

android - 使用 Python 2.7 在 Android 中进行开发

java - Android获取4个随机数