Java 按日期和时间对多行字符串排序(例如,应用程序的消息类型)
我想用这种模式对包含更多行数的字符串进行排序(我想按日期和时间(24小时格式)升序对消息进行排序): 用户名1 日期1 信息1 [这是空行:“\n”] 用户名2 日期2 信息2 例如,我有这样的字符串: 用户1 2013年11月15日13:34:00(CET) 你好 “\n” 用户2 2013年11月10日,10:00:05(CET) 嗨,你好吗 “\n” 用户1 2013年11月17日,08:00:00(CET) 不错 如何对这个长的多行字符串进行排序,以便最新消息位于底部Java 按日期和时间对多行字符串排序(例如,应用程序的消息类型),java,Java,我想用这种模式对包含更多行数的字符串进行排序(我想按日期和时间(24小时格式)升序对消息进行排序): 用户名1 日期1 信息1 [这是空行:“\n”] 用户名2 日期2 信息2 例如,我有这样的字符串: 用户1 2013年11月15日13:34:00(CET) 你好 “\n” 用户2 2013年11月10日,10:00:05(CET) 嗨,你好吗 “\n” 用户1 2013年11月17日,08:00:00(CET) 不错 如何对这个长的多行字符串进行排序,以便最新消息位于底部 谢谢你的帮助 您必
谢谢你的帮助 您必须创建一个自定义类,实现并重写
compareTo
方法来比较字符串,然后您可以简单地调用sort
方法。我认为最简单的解决方案是创建表示一个条目的类:
public class ChatEntry implements Comparable<ChatEntry>{
String message;
String user;
Date date;
@Override
public int compareTo(ChatEntry other) {
return date.compareTo(other.date);
}
}
public类ChatEntry实现了可比较的{
字符串消息;
字符串用户;
日期;
@凌驾
公共整数比较(其他){
返回日期。比较(其他日期);
}
}
现在,您可以简单地将字符串解析为这些对象。
将所有对象放入列表,并使用java.util.Collections.sort(List)对消息进行排序,然后再次打印它们1)将字符串转换为单个消息对象,并将它们放入列表或数组中,2)对它们进行排序,3)从已排序的消息构造字符串请添加您尝试过的脚本。我遇到异常:java.lang.ClassCastException:com.example.MyMaps.ChatEntry无法强制转换为java.util.Date。你能给我举个例子说明如何实现这个吗?谢谢,我在可比较的界面上犯了一个小错误。请现在试一试嗨,太好了,它正在工作!谢谢