Java におけるHashMap
、、LinkedHashMap
の違いは何ですか?TreeMap
keySet
3 つすべてに とがあるため、出力に違いは見られませんvalues
。
また、Hashtable
sとは何ですか?
Map<String, String> m1 = new HashMap<>();
m1.put("map", "HashMap");
m1.put("schildt", "java2");
m1.put("mathew", "Hyden");
m1.put("schildt", "java2s");
print(m1.keySet());
print(m1.values());
SortedMap<String, String> sm = new TreeMap<>();
sm.put("map", "TreeMap");
sm.put("schildt", "java2");
sm.put("mathew", "Hyden");
sm.put("schildt", "java2s");
print(sm.keySet());
print(sm.values());
LinkedHashMap<String, String> lm = new LinkedHashMap<>();
lm.put("map", "LinkedHashMap");
lm.put("schildt", "java2");
lm.put("mathew", "Hyden");
lm.put("schildt", "java2s");
print(lm.keySet());
print(lm.values());
ベストアンサー1
私は視覚的なプレゼンテーションを好みます:
財産 | ハッシュマップ | ツリーマップ | リンクハッシュマップ |
---|---|---|---|
反復順序 | 順序は保証されず、時間の経過とともに一定のままになります | 自然な順序に従って並べられた | 挿入順序 |
取得 / 配置 / 削除 / containsKey | オー(1) | O(log(n)) | オー(1) |
インターフェース | 地図 | ナビゲート可能なマップ、マップ、ソートされたマップ | 地図 |
NULL値/キー | 許可された | 価値のみ | 許可された |
フェイルファスト行動 | イテレータのフェイルファスト動作は保証できず、同期されていない同時変更が存在する場合、確実な保証を行うことは不可能である。 | イテレータのフェイルファスト動作は保証できず、同期されていない同時変更が存在する場合、確実な保証を行うことは不可能である。 | イテレータのフェイルファスト動作は保証できず、同期されていない同時変更が存在する場合、確実な保証を行うことは不可能である。 |
実装 | バケツ | 赤黒木 | 二重リンクバケット |
同期されている | 実装が同期されていない | 実装が同期されていない | 実装が同期されていない |