Java 按日期和时间对多行字符串排序(例如,应用程序的消息类型)

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) 不错 如何对这个长的多行字符串进行排序,以便最新消息位于底部 谢谢你的帮助 您必

我想用这种模式对包含更多行数的字符串进行排序(我想按日期和时间(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。你能给我举个例子说明如何实现这个吗?谢谢,我在可比较的界面上犯了一个小错误。请现在试一试嗨,太好了,它正在工作!谢谢