【问题标题】:How to display data from ArrayList hourly?如何每小时显示来自 ArrayList 的数据?
【发布时间】:2012-01-29 18:08:33
【问题描述】:

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

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

【问题讨论】:

  • 很难理解你在问什么。我们知道英语可能不是您的第一语言,但如果您能把这个问题说得更清楚些,那将有助于我们为您提供帮助!
  • 我想显示上面提到的数据,我想显示的数据在数组列表中,所以我可以用数组列表中的数据做什么来显示我想要的数据
  • 与问题不太相关,但请使用不同的日期格式。当它是一个月的前 12 天之一时,不可能知道日期是 dd-mm-yyyy 还是 mm-dd-yyyy。如果您打算使用连字符作为分隔符,请考虑使用更标准的 yyyy-mm-dd 形式。

标签: java jsp arraylist


【解决方案1】:

如果列表已排序,您可以执行以下操作(纯 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);
}

从没有标题开始,我们遍历所有行。日期和房子是从当前行中提取的。如果它们与当前标题不同,则标题将更改为当前日期和小时并打印。然后打印该行。

如果时间戳之间存在较大间隔,则不会打印这些间隔的标题。

【讨论】:

  • 你正在使用列表?我拥有的数据在数组列表中?所以我应该将我的数组列表放在你的列表位置吗?
  • @SalmanRaza 是的,你应该有你的 ArrayList,我用一个 List 来展示它应该如何工作。一个普通的字符串数组也可以。
  • @Roger 在我评论“system.format”行之前它正在打印数据,因为它给了我错误,因为我在jsp页面上使用了它,还有一件事它在哪里打印“标题”??检查日期后只是打印行??
  • @SalmanRaza 我错过了格式中的标题。已更新代码。当然,您可以改用 System.out.println(header + ":00:00") 或类似的。 (注意自己,发布前运行代码!)
  • @Roger 我只是在此格式行收到错误“;预期”
【解决方案2】:

我假设您有一个List&lt;String&gt;List&lt;YourOwnClass&gt;,并且您想根据时间和显示对它们进行排序。

使用java.util.Comparator 比较两个整体。 对于List&lt;String&gt;,它将是

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2021-12-20
    • 2013-04-06
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多