[
{
createTime: '2023-05-31 01:59:02',
articleStatus: '1',
articleOrder: 3,
},
{
createTime: '2023-05-26 07:25:51',
articleStatus: '1',
articleOrder: null,
},
{
createTime: '2023-05-26 07:17:10',
articleStatus: '1',
articleOrder: 1,
},
{
createTime: '2023-05-25 07:17:10',
articleStatus: '1',
articleOrder: null,
}
];
对这四个对象进行排序,如果有articleOrder,那么根据articleOrder进行排序,如果articleOrder为null就根据createTime时间从大到小排序,上述四个对象articleOrder为1 null 3 null 那么剩下两个null就是根据createTime时间从大到小排序
首先,根据 articleOrder 属性进行排序。如果 articleOrder 相等,则进行下一步排序。
如果 articleOrder 为 null,则根据 createTime 属性进行排序。将 null 值排在最前面,然后按照 createTime 时间从大到小排序。
可以使用Java中的Collections.sort()函数进行排序,首先需要定义一个比较器Comparator来指定排序规则。根据题目要求,我们可以先判断articleOrder是否为null,如果不为null则按照articleOrder升序排列,否则按照createTime降序排列。
具体解释可以参考我这篇文章:https://blog.csdn.net/weixin_43576565/article/details/130970259?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22130970259%22%2C%22source%22%3A%22weixin_43576565%22%7D
<%@ page import="java.util.List" %>
<%@ page import="java.util.Collections" %>
<%@ page import="java.util.Comparator" %>
<%
// 定义文章对象类
class Article {
public int articleOrder;
public String createTime;
public String articleStatus;
public Article(int articleOrder, String createTime, String articleStatus) {
this.articleOrder = articleOrder;
this.createTime = createTime;
this.articleStatus = articleStatus;
}
}
// 获取文章列表
List<Article> articles = new ArrayList<>();
articles.add(new Article(3, "2023-05-31 01:59:02", "1"));
articles.add(new Article(null, "2023-05-26 07:25:51", "1"));
articles.add(new Article(1, "2023-05-26 07:17:10", "1"));
articles.add(new Article(null, "2023--05-25 07:17:10", "1"));
// 定比较器
Comparator<Article> articleComparator = new Comparator<Article>() {
@Override
public int compare(Article o1, Article o2) {
if (o1.articleOrder != null && o2.articleOrder != null) {
return o1.articleOrder - o2.articleOrder; // 按照articleOrder升序排列
} else if (o1.articleOrder != null) {
return -1; // o2.articleOrder为null,o1排在前面
} else if (o2.articleOrder != null) {
return 1; // o1.articleOrder为null,o2排在前面
} else {
return o2.createTime.compareTo(o1.createTime); // articleOrder都为null,按照createTime降序排列
}
}
};
// 排序
Collections.sort(articles, articleComparator);
// 输出结果
for (Article article : articles) {
out.println(article.articleOrder + " " + article.createTime + " " + article.articleStatus + "<br>");
}
%>
输出结果为:
1 2023-05-26 07:17:10 1
3 2023-05-31 01:59:02 1
null 2023-05-26 07:25:51 1
null 2023-05-25 07:17:10 1