Wenn Sie eine Hash-Karte einbetten wie so:Eingebettete Hash-Karte Groß (O)?
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>();
Map<String, String> innerMap = new HashMap<String, String>();
innerMap.put("x","y");
map.put("z", innerMap);
innerMap = map.get("z"); <---------- O(1) time
String y = innerMap.get("x"); <-------- O(1) time
dies, dass so lange, heißt das, da beide Karten zu suchen Zeiten O relativ nahe bleiben (1), dann können Sie im Wesentlichen durch eine zweite Ebene eines hashmap suchen noch in O (1) Zeit?
Meine Aufgaben als Praktikant beschäftigen mich sehr mit Datenvergleichen, und ich habe neulich etwas Ähnliches verwendet. Ich hatte einen String-Schlüsselwert, der den Namen eines bestimmten "Plans" und einen Wert als Hashmap enthielt. Die interne hashmap hatte einen String-Schlüsselwert einer Angestellten-ID und einer Beziehung (wenn ein Mitarbeiter zweimal besucht wurde, was bedeutet, dass er zwei unterschiedliche Deckungsgrade innerhalb des Plans von der externen Karte hatte, dann würde seine Beziehung aktualisiert werden.) ein guter? ich versuche, eine Lookup & bearbeiten Zeit von O (1)
Ja, das ist immer noch 'O (1) ', da die Zeit, die für den Zugriff auf ein Element benötigt wird, nicht davon abhängt, wie viele Elemente existieren. –
Willkommen auf der Website! Weitere Informationen finden Sie in der [Tour] (https://Stackoverflow.com/tour). [Diese Frage] (http://stackoverflow.com/questions/1055243/is-a-java-hashmap-really-o1) enthält weitere Details zu HashMaps. Im Allgemeinen, ja, wenn Sie zwei O (1) -Operationen haben, sollte das Ergebnis O (1) sein. Die Konstanten, die im Big-O versteckt sind, werden jedoch größer. – cxw
die Suche nach hashmap ist konstante Zeit. 2 * C = 2C = O (1) sowieso – CSK