![](/img/trans.png)
[英]Sort a list of objects by two fields ascending order and descending order using comparable in Java
[英]Java order list of objects by null fields
我有一个对象列表,例如学生。 学生有名字、中间名和姓氏。 `
让我们说为了这个例子的目的,每个字段都可以为空。 我想对列表进行排序,以便将所有空字段移动到列表末尾,并将所有非空字段移至顶部。
我不需要根据实际的非空值进行排序。
例子:
[
Harry, John, Carter,
Tony, Thomas, Holmes,
John, null, Chavez,
null, Micharl, Heinz,
null, null, Simpson,
null, null, null
]
是否有可能有一个比较器来实现这一点,还是我需要单独的比较器?
您可以创建一个函数,该函数获取学生的所有信息并根据信息确定优先级并返回优先级值。
然后使用比较器按优先级值排序
studentList.sort(Comparator.comparing(s -> getPriority(s)));
您可以使用 Guava(Google 的 Java 核心库):
List<Integer> toSort = Arrays.asList(3, 5, 4, null, 1, 2);
Collections.sort(toSort, Ordering.natural().nullsLast()); // sorting nulls last
assertThat(toSort.get(toSort.size() - 1), nullValue());
在这里阅读更多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.