2016-09-21 2 views
0

Es gibt einen Weg, Sie können Array s in einem anderen Array/, von anderer Art sein? Beispiel: Wenn ich einen ArrayList mit Namen von Klassen und innerhalb jedes Index einen Array mit seinen Statistiken machen möchte.Arten von ArraysLists

+1

Während es möglich ist, ein Array von Object zu erstellen, ist es keine gute Datenstruktur, um mit Ihren Daten umzugehen. –

+0

Ich schlage vor, Wörterbücher zu betrachten, Sie können den Index auf jede beliebige Weise verwenden, wo Sie den Wert wie eine Liste (oder die Java-Variante) verwenden können. Es ist jedoch nicht besonders effizient. Ich schlage vor, dass Sie mehr Informationen geben, da es normalerweise einen besseren Weg gibt, Sachen zu tun. – Nickvda

+0

@DavideLorenzoMARINO Und was wäre ein effizienter Weg, um Klassen wie ich zuvor erwähnt zu erstellen? – AnUnnoticedPotato

Antwort

0

Wenn Sie nur zwanzig verschiedene Datenstrukturen verarbeiten müssen, besteht die beste Lesbarkeit darin, eine benutzerdefinierte Klasse für jede Datenstruktur zu erstellen. Überlegen Sie sich schließlich, Klassen von Klassen und gemeinsamen Schnittstellen zu erstellen.


Wenn Sie eine generische Datenstruktur erstellen müssen, um verschiedene Arten von Daten zu speichern, können Sie verschiedene Techniken verwenden.

Wenn Sie kümmern sich nicht auf die Reihenfolge der Felder Sie eine einfache Karte wie folgt verwendet werden:

Map<String, Object> complexObject = new HashMap<>(); 
complexObject.put("name", "John"); 
complexObject.put("lastName", "Smith"); 
complexObject.put("age", 30); 

Wenn Sie die Reihenfolge der Felder mantain benötigen, können Sie verwenden LinkedHashMap:

Hashtabelle und verknüpfte Listenimplementierung der Map-Schnittstelle mit vorhersagbarer Iterationsreihenfolge.

Diese Datenstruktur auch verschachtelte Ebenen beispielsweise halten kann,:

Map<String, Object> person = new HashMap<>(); 
person.put("name", "John"); 
person.put("lastName", "Smith"); 
person.put("age", 30); 

Map<String, Object> address = new HashMap<>(); 
address.put("city", "Rome"); 
address.put("country", "Italy"); 

person.put("address", address); 

List<String> preferredColors = new ArrayList<>(); 
preferredColors.add("Red"); 
preferredColors.add("Blue"); 

person.put("preferredColors", preferredColors); 

Schließlich können Sie auch prüfen, die Karte innerhalb einer benutzerdefinierten Klasse „ComplexData“, die nur Methoden aussetzen verstecken hinzuzufügen, oder Legen Sie eine Eigenschaft fest, und rufen Sie eine Eigenschaft ab. Fügen Sie schließlich eine spezifische Methode zum Abrufen primitiver Datentypen hinzu, sodass die zurückgegebenen Werte nicht manuell umgewandelt werden müssen.