Как отображать данные из ArrayList ежечасно? - PullRequest
0 голосов
/ 29 декабря 2011

Я хочу показать данные в этом формате,

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 ]

2 голосов
/ 29 декабря 2011

Если список отсортирован, вы можете сделать что-то вроде этого (чистая 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 голос
/ 29 декабря 2011

Я предполагаю, что у вас есть List<String> или List<YourOwnClass>, и вы хотите отсортировать их по времени и отображению.

Используйте java.util.Comparator для сравнения двух значений.В случае 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());

Помните, что это вместо сортировки.Поэтому, если вы не хотите изменять список, возьмите его копию перед сортировкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...