在给定的项目列表中,如果有可空字段,我们可以使用Comparator
来对项目进行排序,并将可空字段的项目放在指定位置。
下面是一个示例代码,假设我们有一个项目类Project
,其中包含一个可空的字段priority
,我们希望将具有非空priority
的项目排在列表的前面,并按照priority
进行降序排序,而没有priority
的项目排在列表的后面。
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
class Project {
private Integer priority;
public Project(Integer priority) {
this.priority = priority;
}
public Integer getPriority() {
return priority;
}
}
public class Main {
public static void main(String[] args) {
List projects = new ArrayList<>();
projects.add(new Project(3));
projects.add(new Project(null));
projects.add(new Project(1));
projects.add(new Project(2));
projects.add(new Project(null));
projects.add(new Project(4));
Comparator comparator = Comparator.comparing(Project::getPriority, Comparator.nullsLast(Comparator.reverseOrder()));
projects.sort(comparator);
for (Project project : projects) {
System.out.println(project.getPriority());
}
}
}
在上面的代码中,我们首先创建一个Comparator
对象comparator
,通过Comparator.comparing
方法指定按照Project
类的getPriority
方法返回的值进行比较。使用Comparator.nullsLast
方法可以将null
值放在最后,Comparator.reverseOrder()
表示降序排序。
然后,我们调用projects.sort(comparator)
对项目列表进行排序。
最后,我们遍历排序后的项目列表并打印项目的priority
值。
运行上面的代码,输出如下:
4
3
2
1
null
null
可以看到,具有非空priority
的项目按照降序排在前面,而没有priority
的项目放在列表的最后。
上一篇:按客户自动使用循环的Arima。