关于Java中Stream自定义排序的问题?
题目描述
有一个List<Obj>集合。Obj中有个属性time是Date类型的,现在需要对集合排序,排序规则是:
8点~23点的数据排在前面,0~7时的数据排在后面
回答:
public class Test { static class Obj {
Date date;
int getHour() {
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.HOUR_OF_DAY);
}
}
public static void main(String[] args) throws ParseException {
List<Obj> list = new ArrayList<>();
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for (int i = 0; i < 24; i++) {
Obj obj = new Obj();
obj.date = formatter.parse("2022-10-31 " + String.format("%02d", i) + ":12:15");
list.add(obj);
}
// 方法一
for (int i = 0; i < 8; i++) {
for (int index = 0; index < list.size(); index++) {
if (list.get(index).getHour() == i) {
Obj remove = list.remove(index);
list.add(remove);
}
}
}
// 方法二
list.sort((o1, o2) -> o2.getHour() - o1.getHour());
// 输出
for (Obj obj : list) {
System.out.println(obj.getHour());
}
}
}
以上是 关于Java中Stream自定义排序的问题? 的全部内容, 来源链接: utcz.com/p/944794.html