如何每小时显示ArrayList中的数据?

时间:2011-12-29 09:15:50

标签: java jsp arraylist

我想以这种格式显示数据,

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中每小时显示数据

2 个答案:

答案 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());

记住这是适当的排序。因此,如果您不想修改列表,请在排序之前复制一份。