相关疑难解决方法(0)

HashMap,LinkedHashMap和TreeMap之间的区别

是什么区别HashMap,LinkedHashMapTreeMap在Java中?我没有看到输出有任何差异,因为所有三个都有keySetvalues.什么是Hashtables?

Map 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 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 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());
Run Code Online (Sandbox Code Playgroud)

java map

919
推荐指数
13
解决办法
58万
查看次数

TreeMap或HashMap更快

我正在写一本字典,大量使用String作为键Map<String, Index>.我关心的是哪一个HashMap,并TreeMap会产生更好的(更快)的性能在搜索在地图上的关键?

java performance

22
推荐指数
4
解决办法
4万
查看次数

何时使用TreeMap代替HashMap

我需要一个支持3种操作的映射:“插入”,“删除”和“按排序顺序迭代”。这正是TreeMapJava中的接口。话虽如此,也可以通过使用a HashMap并在每次迭代之前对其进行排序来实现它。为了分析不同的方法,可以说我执行n插入和m删除操作,先读取“ r”,然后进行迭代。

随着TreeMap我们有以下实现:

TreeMap<Integer, Integer> tm = Maps.newTreeMap();
for (int i=0;i<n;++i) {tm.put(i, 2*i);} // O(n*log(n))
for (int i=0;i<m;++i) {tm.remove(i);} // O(m*log(m))
for (int i=0;i<r;++i) {tm.get(i);} // O(r*log(n-m))
for (Integer i : tm) {print(i);} // O(n-m)
Run Code Online (Sandbox Code Playgroud)

总而言之,我们的总运行时间为 O(n*log(n) + m*log(m) + r*log(n-m))

随着HashMap我们有以下实现:

HashMap<Integer, Integer> hm = Maps.newHashMap();
for (int i=0;i<n;++i) {hm.put(i, 2*i);} // O(n)
for (int i=0;i<m;++i) {hm.remove(i);} // O(m)
for (int i=0;i<r;++i) {hm.get(i);} // O(r)
List<Integer> sortedList …
Run Code Online (Sandbox Code Playgroud)

java collections

2
推荐指数
1
解决办法
2373
查看次数

标签 统计

java ×3

collections ×1

map ×1

performance ×1