最近在处理实时数据时,总是乱序,搞很心烦,所以总结了这两种排序方式作为记录,方便以后使用:
public class Test {
public static void main(String[] args) {
List<MessageBody> bodies = new ArrayList<>();
MessageBody body = new MessageBody();
body.setId(1);
body.setName("小明1");
body.setScore(2.3F);
body.setTimeStamp(System.currentTimeMillis()+1000);
MessageBody body0 = new MessageBody();
body0.setId(2);
body0.setName("小明2");
body0.setScore(2.3F);
body0.setTimeStamp(System.currentTimeMillis()+2000);
MessageBody body1 = new MessageBody();
body1.setId(3);
body1.setName("小明3");
body1.setScore(2.3F);
body1.setTimeStamp(System.currentTimeMillis()+3000);
MessageBody body2 = new MessageBody();
body2.setId(4);
body2.setName("小明4");
body2.setScore(2.3F);
body2.setTimeStamp(System.currentTimeMillis()+4000);
MessageBody body3 = new MessageBody();
body3.setId(5);
body3.setName("小明5");
body3.setScore(2.3F);
body3.setTimeStamp(System.currentTimeMillis()+5000);
MessageBody body4 = new MessageBody();
body4.setId(6);
body4.setName("小明6");
body4.setScore(2.3F);
body4.setTimeStamp(System.currentTimeMillis()+6000);
MessageBody body5 = new MessageBody();
body5.setId(7);
body5.setName("小明7");
body5.setScore(2.3F);
body5.setTimeStamp(System.currentTimeMillis()+7000);
MessageBody body6 = new MessageBody();
body6.setId(8);
body6.setName("小明8");
body6.setScore(2.3F);
body6.setTimeStamp(System.currentTimeMillis()+8000);
MessageBody body7 = new MessageBody();
body7.setId(9);
body7.setName("小明9");
body7.setScore(2.6F);
body7.setTimeStamp(System.currentTimeMillis()+9000);
bodies.add(body0);
bodies.add(body);
bodies.add(body3);
bodies.add(body1);
bodies.add(body2);
bodies.add(body7);
bodies.add(body4);
bodies.add(body6);
bodies.add(body5);
System.out.println(JSONObject.toJSONString(bodies));
System.out.println("-------------------------------------------------------------------------------");
// 第一种排序
List<MessageBody> collect = bodies.stream().sorted(Comparator.comparing(MessageBody::getTimeStamp)).collect(Collectors.toList());
System.out.println(JSONObject.toJSONString(collect));
System.out.println("-------------------------------------------------------------------------------");
// 第二种排序
Collections.sort(bodies, new Comparator<MessageBody>() {
@Override
public int compare(MessageBody o1, MessageBody o2) {
Long timeStamp = o1.getTimeStamp();
Long timeStamp1 = o2.getTimeStamp();
return timeStamp.compareTo(timeStamp1);
}
});
System.out.println(JSONObject.toJSONString(bodies));
}
}