Nach dem Lesen verschachtelter Klassen, verschachtelter Listen und Mapping habe ich immer noch Probleme, die richtige Methode zu bestimmen und sogar noch, wie diese drei Methoden implementiert werden können.Verschachtelte Klassen, verschachtelte Listen oder Karten?
Ziel: Verfolgen von Statistiken über mehrere Dienste in einer Protokolldatei. Jede Änderung des Dienststatus ist in einer Zeile und enthält den Namen, den altenStatus, newStatus und timeChanged.
Am Ende möchte ich die Zeit zwischen diesen Zeilen sehen, aber im Moment versuche ich einfach zu organisieren Daten richtig.
Derzeit Ich gehe die Straße hinunter, eine Klasse zu verwenden und hier ist das Gebäude davon:
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;
}
}
Das ist alles finden und gut ist. Wenn der Parser einen neuen Dienst entdeckt, fügt er ihn der Liste hinzu, sodass keine Duplikate vorhanden sind. Dann habe ich jedes Mal hinzugefügt, wenn ein Dienststatus geändert wurde. Ich kann nicht herausfinden, wie für jeden Dienst diese Daten gespeichert werden.
Ich denke, ich könnte es mit der Verwendung einer Datenbank mit dem eindeutigen Bezeichner als Dienstname vergleichen, der Datensätze für jedes Mal enthält, wenn sich der Status ändert, in was er geändert wurde und in die Uhrzeit. Sobald ich das verstanden habe, kann ich anfangen, die Zeiten zwischen zu vergleichen.
Erste Idee, hier eine weitere Liste hinzuzufügen, die die Variablen enthält, aber wie würde ich das jedem Service zuordnen?
Ich dachte Arrays, aber in Java scheinen sie eher statisch, als in der Größe zu ändern, um mehr Daten hinzuzufügen. Ich habe die Arbeit um für diese in PHP, da vergessen, aber aus meiner begrenzten Erfahrungen aus der Vergangenheit Ich erinnere mich, in der Lage, Arrays aufzubauen und zu verwenden wie:
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
Was mich führen hinunter den Weg der erweiterten Klassen verwenden. Ich könnte Dienstleistungen und auch Service haben. Dienste würden dazu führen, nur eine Liste von Diensten zu haben, aber wie fügt der Dienst seine zugrunde liegenden Variablen wieder bestimmten Diensten hinzu, die in der übergeordneten Dienstklasse aufgelistet sind?
Noch einmal, ich habe das Gefühl, dass ich das überdenke, nachdem ich zu viele Beispiele gelesen habe, die ähnlich sind, aber nicht zu dem, was ich erreichen möchte. Oder ich bin einfach komplett von der Wand und es könnte eine weitaus bessere Methode geben.
'myServices.get (" TheService "). NewStatus wäre ein" Java Way ". Wie auch immer, Java ist kein PHP. – user2864740
* "Es fügt es der Liste hinzu, so dass es keine Duplikate gibt." * In diesem Fall ist es besser, 'HashSet' zu verwenden. – user2004685
Randnotiz: Lesen Sie über Namenskonventionen. Variablennamen gehen CamelCase, nicht AllServices zum Beispiel! – GhostCat