Frage

Ich habe eine Anforderung, in der ich eine verschachtelte Hashmap benötigen muss. Aber die Tiefe würde zur Laufzeit entschieden werden. ZB, wenn zur Laufzeit der Benutzer 3 sagt, sollte mein HashMap wie sein

HashMap<String, HashMAp<String, HashMap<String, String>>>

Wenn er 4 sagt, dann

HashMap<String, HashMAp<String, HashMap<String, HashMap<String, String>>>>

Gibt es eine Möglichkeit, diese Art von Funktionalität zu implementieren? Eine andere API oder Toolkit?

War es hilfreich?

Lösung

Oh, das ist mit ziemlicher Sicherheit eine sehr schlechte Idee.

Sie klingen so, als ob Sie wirklich einen Baum oder ein Diagramm möchten und wissen nicht, wie Sie ihn schreiben sollen.

Nicht.

Sie werden besser dran sein, indem Sie herausfinden, wie Sie das schreiben, was Sie richtig brauchen.

Es gibt keine Bibliothek, um das zu tun, was Sie wollen, aus einem sehr guten Grund - Sie sollten es nicht tun.

Andere Tipps

  1. Es ist besser, 100 Funktionen auf einer Datenstruktur zu betreiben als 10 Funktionen für 10 Datenstrukturen. Alan Perlis.

Was Sie fragen, wird in der Standrad -Clojure -Bibliothek implementiert: Entgegen der angegebenen, geschachtelten Hashmaps ist die offensichtliche und absolut vernünftige Art, Bäume darzustellen. `` `clojure (def My-tree {: a {: aa 0}: b 0: c {: cc 0: dd {: e 0})

(= (Get-in my baum [: c: dd: e]) 0) `` `

Sie können es auch über das UN -Objet -Diagramm darstellen, aber Sie verlieren die Allgemeinheit von Hashmaps: Objekte sind sowieso konzeptionelle Hashmaps mit Einschränkungen der Attribute, die es haben kann.

Sie können sicherlich eine Hash -Karte mit Typ definieren HashMap<String, ?> und erhalten Sie dynamische Tiefe auf Kosten der Art der Art.

Aber Duffymo ist richtig - Sie missbrauchen wahrscheinlich die Struktur. Warum willst du einen solchen Typ?

Vielleicht möchten Sie sich ansehen Dieser Artikel über Bäume. Möglicherweise finden Sie es hilfreich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top