关于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

回到顶部