После прочтения вложенных классов, вложенных списков и сопоставления у меня все еще возникают проблемы с выбором правильного метода для использования и даже при том, как реализовать эти три метода.Вложенные классы, вложенные списки или карты?
Цель: отслеживание статистики нескольких сервисов за раз в журнале. Каждое изменение статуса службы находится в одной строке и содержит имя, старое состояние, новое состояние и timeChanged.
В конце концов, я хотел бы видеть время между этими строками, но на данный момент я просто пытаюсь организовать данных.
В настоящее время, я иду по дороге, используя класс и здесь здание его:
public class Services {
private List<String> AllServices = new ArrayList<String>();
// Initial thought of adding another list here, containing
// the variables, but how would I associate that to the
// service above?
private List<String> ServiceStatus;
public boolean AddService(String name) {
if (!AllServices.contains(name)) {
AllServices.add(name);
return true;
}
return false;
}
public List<String> GetServices() {
return AllServices;
}
}
Это все найти и хорошо. Когда анализатор обнаруживает новую услугу, она добавляет ее в список, поэтому дубликатов нет. Затем я перешел к добавлению каждый раз, когда он обнаружил, что статус службы изменился. Я не могу понять, как для каждой службы хранить эти данные.
Я думаю, я мог бы упомянуть его использовать базу данных с уникальным идентификатором, являющимся именем службы, сохраняя записи для каждого изменения статуса, его изменения и времени. Как только я получу это, я могу начать сравнивать время между ними.
Первоначальная мысль о добавлении здесь другого списка, содержащего переменные, но как бы связать это с каждой службой?
Я рассматривал массивы, но на Java они кажутся довольно статичными, как при изменении их размера, чтобы добавить больше данных. С тех пор я забыл работу вокруг для этого в PHP, но из моего ограниченного прошлого опыта, я помню, будучи в состоянии создать и использовать массивы, такие как:
statusChanged = myServices["TheService"][i][date];
statusChangedTo = myServices["TheService"][i][new_status];
statusChangedTo = myServices["OtherService"][i][date];
statusChangedTo = myServices["OtherService"][i][new_status];
AllServices
|- TheService
| |- TimeDate
| | - New Status
| | - Old Status
|- OtherService
|- TimeDate
| - New Status
| - Old Status
, которые ведут меня по пути использования расширенных классов. Я мог бы иметь Службы, а также Службу. Службы приведут к простому перечню услуг, но как же Service снова связывает его базовые переменные с конкретными службами, перечисленными в классе родительских служб?
Опять же, я чувствую, что я слишком задумываюсь об этом, прочитывая слишком много примеров, которые похожи, но не на то, что я пытаюсь выполнить. Или, я просто полностью со стены, и может быть намного лучший метод.
'myServices.get (« TheService »). NewStatus' будет более« Java-способом ». Во всяком случае, Java не является PHP. – user2864740
* «Он добавляет его в список, поэтому нет дубликатов». * В этом случае будет лучше использовать «HashSet». – user2004685
Сторона примечания: читайте о соглашениях об именах. Переменные имена находят camelCase, а не AllServices, например! – GhostCat