Am besten ist es, wenn Sie eine HourData
Klasse, die eine einzeln eine Reihe von Temperatur-, Wind- und Druckwerten, etwa so:
public class HourData {
private float temp, wind, pressure;
// Getters and setters for the above fields
}
Wenn Sie mehr als einen Satz von Werten speichern müssen, können Sie ein Array oder eine Sammlung von HourData
Objekte. Zum Beispiel:
HourData[] hourDataArray = new HourData[10000];
Dies ist letztlich viel flexibler, leistungsfähiger und intuitiver als die Speicherung der Datenfelder in der Klasse HourData.
Flexibilität
Ich behaupte, dass dieser Ansatz flexibler ist, weil er die Wahl der Art der zu verwendenden Sammlungsimplementierung (z. B. ArrayList
, LinkedList
usw.) an die Nutzer des HourData
Klasse. Wenn er/sie nur mit einem einzigen Satz von Werten arbeiten möchte, ist er/sie bei diesem Ansatz nicht gezwungen, mit einem Array oder einer Sammlung zu arbeiten.
Leistung
Angenommen, Sie haben eine Liste von HourData
Instanzen. Wenn Sie drei Float-Arrays auf die von Ihnen beschriebene Weise verwendet haben, dann ist der Zugriff auf die i'th temp
, wind
y pressure
Werte können zu drei verschiedenen Seiten auf die im Speicher zugegriffen werden soll. Dies geschieht, weil alle der temp
Werte werden zusammenhängend gespeichert, gefolgt von allen wind
Werte, gefolgt von allen pressure
Werte. Wenn Sie eine Klasse verwenden, um diese Werte zu gruppieren, wird der Zugriff auf den i-ten temp
, wind
y pressure
Werte sind schneller, weil sie alle nebeneinander im Speicher abgelegt werden.
Intuitiv
Wenn Sie eine HashMap
Jeder, der auf eines der Felder zugreifen möchte, muss die Feldnamen im Voraus kennen. HashMap
Objekte eignen sich besser für Schlüssel/Wert-Paare, bei denen die Schlüssel zur Kompilierungszeit nicht bekannt sind. Die Verwendung eines HourData
Klasse, die klar definierte Felder enthält, braucht man nur einen Blick auf die Klassen-API zu werfen, um zu wissen, dass HourData
enthält Werte für temp
, wind
y pressure
.
Auch die Getter- und Setter-Methoden für Array-Felder können verwirrend sein. Was, wenn ich nur einen einzelnen Satz von temp
, wind
y pressure
Werte in die Liste aufnehmen? Muss ich jedes der Arrays abrufen und die neuen Werte an das Ende der Arrays anhängen? Diese Art von Verwirrung lässt sich leicht vermeiden, indem man eine "Wrapper"-Sammlung um eine HourData
die nur mit Einzelwerten arbeitet.