Ich hatte ursprünglich eine ArrayList
geschrieben und eindeutige Werte (Benutzernamen, d. H. Strings
) darin gespeichert. Ich brauchte später die ArrayList
, um zu suchen, ob ein Benutzer darin existierte. Das ist O(n)
für die Suche.Ist es eine gute Idee, Daten als Schlüssel in HashMap mit leeren/Null-Werten zu speichern?
Mein technischer Leiter wollte, dass ich das zu einem HashMap
ändere und die Benutzernamen als Schlüssel im Array und Werte als leer Strings
speichern.
also in Java -
hashmap.put("johndoe","");
ich sehen kann, wenn dieser Benutzer später existiert, indem Sie -
hashmap.containsKey("johndoe");
Dies ist O(1)
richtig?
Meine Führung sagte, dies sei ein effizienter Weg, dies zu tun und es ergab Sinn für mich, aber es schien nur ein wenig aus, leer/leer als Werte in der Hashmap und speichern Elemente in ihm als Schlüssel.
Meine Frage ist, ist das ein guter Ansatz? Die Effizienz schlägt ArrayList#contains
oder eine Array-Suche im Allgemeinen. Es klappt. Meine Sorge ist, ich habe niemanden gesehen, der das nach einer Suche macht. Ich vermisse vielleicht ein offensichtliches Problem, aber ich kann es nicht sehen.
plus1, weil es eine gültige Frage ist, wenn man die Datenstrukturen von Java nicht kennt. – Daniel
Ein 'HashSet' ist eine Implementierung des' HashMap.keySet() '. Wenn Sie eine Map in ein Set verwandeln möchten, können Sie 'set = Collections.newSetFromMap (map)' verwenden. –
Diese Frage ist nicht falsch. Dieses Forum ist der falsche Ort. "Stack Overflow ist eine Frage-Antwort-Website für professionelle und enthusiastische Programmierer". – rdllopes