在给定的项目列表中,如果有可空字段,我们可以使用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。