gpt4 book ai didi

java - 无法添加逻辑以在 Java/android 中的现有比较器中按日期排序

转载 作者:搜寻专家 更新时间:2023-11-01 09:23:33 27 4
gpt4 key购买 nike

我想添加一个条件,该条件也根据 item.startReading 的 DATE(降序顺序)进行排序。item.startReading 值具有字符串格式的日期值 2018-10-20T12:05:41。但我不知道该怎么做将此逻辑添加到当前代码中。在用户单击杂志或图书项目之前,item.startReading 的值为 null。.当用户单击其中一项时,我希望最新的 item.startReading 像下面这样转到顶部。抱歉我的解释,但自从我开始学习 java/android 以来,我真的需要知道该怎么做。一些例子或提示会很可爱。我很想听听你的意见。

  1. 杂志 (2018-10-21T13:06:41) 最新日期项目到顶部
  2. 杂志 (2018-10-20T12:05:41)
  3. 书籍
  4. 书籍

目前,我有以下比较器代码,可以进行如下排序。

(在使用比较器之前)

  1. 杂志
  2. 书籍
  3. 杂志
  4. 书籍

(使用比较器后)使用类型重新订购,最后使用 ID↓

  1. 书籍
  2. 书籍
  3. 杂志
  4. 杂志

我的比较器代码:

public Comparator<MyItem> myComparator = (item1, item2) -> {
//How to add the desc date order with Dates?

if (item1.typeInt == MyItemModel.TYPE_BOOK && item2.typeInt != MyItemModel.TYPE_BOOK) {
return -1;
} else if (item1.type != MyItemModel.TYPE_BOOK && item2.type == MyItemModel.TYPE_BOOK) {
return 1;
} else if (item1.type == MyItemModel.TYPE_MAGAZINE && item2.type != MyItemModel.TYPE_MAGAZINE) {
return -1;
} else if (item1.type != MyItemModel.TYPE_MAGAZINE && item2.type == MyItemModel.TYPE_MAGAZINE) {
return 1;
}
return (Integer.compare((int) item1.id, (int) item2.id)) * -1;
};

最佳答案

首先创建一个解析给定日期的函数

public Date parseDateFromString(String date){
if(date == null) {
return null;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-yy'T'HH:mm:ss", Locale.US);
try {
return simpleDateFormat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}

然后用Comparator比较一下

if (item1.typeInt != item2.typeInt) {
return item1.typeInt == MyItemModel.TYPE_MAGAZINE ? 1 : -1;
} else {
if (parseDateFromString(item1.getStartReading()) == null) {
return 0;
} else if (parseDateFromString(item2.getStartReading()) == null) {
return -1;
} else {
return parseDateFromString(item2.getStartReading()).after(parseDateFromString(item1.getStartReading())) ? 1 : -1;
}
}

关于java - 无法添加逻辑以在 Java/android 中的现有比较器中按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52638352/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com