所以我正在使用日期列表,其中一些值是""即null。我使用了如何在使用集合排序时处理空值Java答案
public int compare(MyBean o1, MyBean o2) {
if (o1.getDate() == null) {
return (o2.getDate() == null) ? 0 : -1;
}
if (o2.getDate() == null) {
return 1;
}
return o2.getDate().compareTo(o1.getDate());
}
以两种升序对列表进行排序,将空放在第一位。
我想要的是按升序排列,先有空值,然后像上面的代码一样按升序排列。然后当选择降序来翻转列表时。列表中的第一个值是按降序排列的,然后是所有的空值。
在我按照集合的升序对列表排序后,我尝试了以下操作。反转顺序() 首先保留空值,然后按降序排列日期。
我还尝试了Collections.reverse(List)
。这将空值放在列表的末尾,但将日期保持在升序。
这应该是有效的:
if (o1.getDate() == null) {
return (o2.getDate() == null) ? 0 : -1;
}
if (o2.getDate() == null) {
return -1;
}
return o2.getDate().compareTo(o1.getDate());
从你的问题中,我不完全确定你是否想要升序或降序的非空日期,但是在o2.getDate(). comareTo(o1.getDate())
之前加上一个-
应该就可以了。
您可以通过一个简单的比较器来实现这一点。根据您的自定义bean对象修改此选项。像这样的-
public class DateComparator implements Comparator<Date> {
private boolean reverse;
public DateComparator(boolean reverse) {
this.reverse = reverse;
}
public int compare(Date o1, Date o2) {
if (o1 == null || o2 == null) {
return o2 != null ? (reverse ? 1 : -1) : (o1 != null ? (reverse ? -1 : 1) : 0);
}
int result = o1.compareTo(o2);
return reverse ? result * -1 : result;
}
public static void main(String[] args) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date[] dates = new Date[]{null, dateFormat.parse("10-10-2013"), null, dateFormat.parse("10-10-2012"), dateFormat.parse("10-10-2015"), dateFormat.parse("10-10-2011"), null};
List<Date> list = Arrays.asList(dates);
Collections.sort(list, new DateComparator(false));
System.out.println(list);
Collections.sort(list, new DateComparator(true));
System.out.println(list);
}
}
在Java8这整件事可以
Collections.sort(list,
Comparator.comparing(MyBean::getDate,
Comparator.nullsFirst(Comparator.naturalOrder()))
.reversed());
问题内容: Python通过按顺序查看元组的元素来对元组列表进行排序。由于集合是无序的,Python如何对集合列表进行排序? 编辑:帖子中的问题和可接受的答案较为笼统,给出的文件也很深入。我的问题不是重复的。 问题答案: 无论列表中有什么内容,元素的方法都是唯一参考的比较方法。对于集合,意味着“是”的适当子集,不足以定义总顺序。这就是为什么结果通常是不确定的。可能是原始列表的任何排列,与实现恰好适
问题内容: 假设我有一个列表(或集合): 我想返回一个ImmutableList(Set),它以自然顺序对术语进行排序/分组,其中以“ src”开头的术语排在第一位,“ assoc”第二位,而“ dest”排在最后。如果一个术语不包含这些术语,则应将其从结果列表中删除。 因此,这里的结果是“ srcB”,“ srcT”,“ assocX”,“ destA”。 我想我可以通过Iterables.fi
问题内容: 我有一个Python ,其中包含带有和方法的对象,以确保集合中没有重复项。 我需要对该结果进行json编码,但是即使将一个空值传递给该方法也会引发。 我知道我可以为具有自定义方法的类创建扩展,但是我什至不知道从哪里开始进行转换。我是否应该使用默认方法中的值创建字典,然后返回该方法的编码?理想情况下,我想使默认方法能够处理原始编码器阻塞的所有数据类型(我将Mongo用作数据源,所以日期似
我正在使用java lambda对列表进行排序。 我怎样才能反向排序呢?
本文向大家介绍如何使用JavaScript对HTML列表进行排序?,包括了如何使用JavaScript对HTML列表进行排序?的使用技巧和注意事项,需要的朋友参考一下 要使用JavaScript对HTML列表进行排序,代码如下- 示例 输出结果 上面的代码将产生以下输出- 在点击“点击排序”按钮-
问题内容: 在我正在使用的代码下面,可以正常工作并输出名称,但不能使用sort方法。我期望“ Collections.sort(nameFromText);” 按名字的字母顺序对ArrayList进行排序。 我究竟做错了什么? 问题答案: 方法期望要排序的列表元素具有可比性。元素类型应该实现接口,或者您应该使用带有通用实例的重载方法。 在下面的代码中,您不满足上述两个条件。您的类既没有实现,也没有