我想以这种格式显示数据,
12-22-2011 11:00:00
[12-22-2011 11:13:39] Warning: Contact 'nagiosadmin' service notification command '/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: PROBLEM\n\nService: C:\ Drive Space\nHost: m-hussain.Musewerx2\nAddress: 192.168.1.106\nState: WARNING\n\nDate/Time: Thu Dec 22 11:13:08 EST 2011\n\nAdditional Info:\n\ncould not fetch information from server\n" | /bin/mail -s "** PROBLEM Service Alert: m-hussain.Musewerx2/C:\ Drive Space is WARNING **" mohsin.raza@musewerx.com' timed out after 30 seconds
[12-22-2011 11:13:08] SERVICE NOTIFICATION: nagiosadmin;m-hussain.Musewerx2;C:\ Drive Space;WARNING;notify-service-by-email;could not fetch information from server
12-22-2011 10:00:00
[12-22-2011 10:02:19] SERVICE NOTIFICATION: nagiosadmin;arsalan.hussain;C:\ Drive Space;CRITICAL;notify-service-by-email;c:\ - total: 19.53 Gb - used: 19.17 Gb (98%) - free 0.36 Gb (2%)
[12-22-2011 10:00:29] Auto-save of retention data completed successfully.
我的数组列表,以便上面数据的每一行都是数组列表的唯一索引,如何将数据显示在小时内,
ArrayList eventLog = new ArrayList();
这样我拥有数据列表中的所有数据我想以这种格式显示数据如何在JSP中每小时显示数据
答案 0 :(得分:2)
如果列表已经排序,您可以执行类似的操作(纯Java,转换为您在JSP中起诉的内容)
String header = null;
List<String> lines = getLines();
for (String line: lines) {
String currentTime = line.substring(1, 14);
if (!currentTime.equals(header)) {
header = currentTime;
System.out.format("%0$s:00:00\n", header);
}
System.out.println(line);
}
从没有标题开始,我们迭代所有行。日期和房屋是从当前行提取的。如果它们与当前标题不同,则标题将更改为当前日期和小时并打印。然后打印这条线。
如果时间戳之间存在较大间隙,则不会打印这些间隙的标题。
答案 1 :(得分:1)
我假设您有List<String>
或List<YourOwnClass>
,并且您希望根据时间和显示对其进行排序。
使用java.util.Comparator
比较两个entires。
在List<String>
的情况下,它将是
class StringComparator implements Comparator<String> {
public int compare(String e1, String e2) {
return e1.substring(0,12).compareTo(e2.substring(0,12));//[12-22-2011 10:02:19]
}
}
}
在YourOwnObject的情况下,比较相应的字段。
然后拨打Collections.sort(list, new StringComparator());
记住这是适当的排序。因此,如果您不想修改列表,请在排序之前复制一份。