2016-10-17 1 views
4

Gibt es in Java eine Datenstruktur, die mehr als 4 Werte enthalten kann?Gibt es in Java eine Datenstruktur, die 4 oder mehr Werte enthalten kann?

So etwas entlang der Linien von

Map<String, String, String, String>; 

Dies ist notwendig, um der Lage sein, die Anzahl der sonst wenn Aussagen zu reduzieren ich habe. Ich würde gerne folgendes machen können.

Überprüfen Sie, ob die Datenstruktur ein Element enthält, das einem bestimmten Wert entspricht. Wenn dies der Fall ist, weist sie eine Variable einer Variablen zu und fügt dann einen Code und eine Nachricht zu einer anderen Variablen hinzu .

Wenn nicht, gibt es ein gutes Training um dies zu erreichen?

+0

Nein, aber Sie können einfach Ihre eigenen erstellen. Oder verwenden Sie eine Karte mit zusammengesetzten Schlüsseln und Werten als Sammlungen, wenn Sie das Rad nicht neu erfinden wollen. – Mena

+4

http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Tschallacka

Antwort

4

Es gibt nichts in den Standard-Bibliotheken, aber Guava hat eine nette Implementierung;

Multimap

genannt

Wenn Guava keine Option in Ihrer Umgebung ist, werden Sie das Rad allerdings neu erfinden müssen.

2

Verwenden MultiMap auf Apache verwenden können,

A MultiMap ist eine Karte mit leicht unterschiedlichen Semantik. Wenn Sie einen Wert in die Karte einfügen, wird der Wert zu einer Sammlung hinzugefügt. Wert immer eine Sammlung zurückgeben, alle Werte auf diesen Schlüssel

MultiMap mhm = new MultiValueMap(); 
mhm.put(key, "A"); 
mhm.put(key, "B"); 
mhm.put(key, "C"); 
Collection coll = (Collection) mhm.get(key); 
1

Verwenden Karte von Karte gesteckter Bestand:

Map<String, Map<String, Map<String, String>>> 
6

Gibt es eine Datenstruktur in Java, die mehr als 4 halten kann Werte?

Es gibt viele von ihnen.

Die einfachste ist wahrscheinlich String[] die vier Saiten halten können, wenn Sie es so instanziiert:

new String[4] 

Und andere Antworten geben andere Datenstrukturen, die könnten Ihre tatsächlichen (das heißt nicht genannt) Anforderungen erfüllen.

Es ist jedoch wahrscheinlich möglich ... geschweige denn sinnvoll ... für uns, alle möglichen Datenstrukturen aufzuzählen, die Ihre angegebene Anforderung erfüllen können.

Hinweis: Sie sollten versuchen zu erklären, wie diese Datenstruktur funktionieren muss.

Tipp 2: "Die Zeilen von Map<String, String, String, String>" hilft uns nicht, Ihre wirkliche Anforderung zu verstehen, weil wir nicht wissen, was Sie damit meinen.


UPDATE - ist Ihre Erklärung noch sehr vage, aber ich denke, Sie so etwas wie dieses brauchen:

Map<String, MyRecord>; 

public class MyRecord { 
    private String link; 
    private String code; 
    private String message; 

    // add constructor, getters, setters as required 
} 
+0

Ich habe meine erste Frage bearbeitet, um zu beschreiben, wofür sie benötigt wird – user6248190

0

Ihre Frage Lesen, Nähte Es ist wie Sie brauchen einfach einen ‚Schlüssel-Wert‘ Paar. Der Schlüssel ist ein "String", den Sie in Ihrer Frage als "bestimmten Wert" bezeichnet haben. Value ist eine Art Wrapper-Objekt, das drei Strings umschließt, die Sie als "Link, Code und Nachricht" bezeichnet haben.

Ich schlage vor, Sie einfach

HashMap < String, Wrapper > map; 

verwenden Sie können eine Klasse ‚Wrapper.java‘ schaffen, die drei Strings enthalten können, wie beispielsweise

String link,code,message; 

Felder Sie diese Felder im Konstruktor instanziieren und später können sie mithilfe von Getter-Methoden abrufen oder auch über Setter verfügen, um die von Ihnen benötigten Werte festzulegen. Sie können der Klasse 'Wrapper.java' einen besseren Kontextnamen geben.

Verwandte Themen