在TreeMap中 - 元素排序
在HashMap中 - 元素未排序
那么,如果我考虑使用get
,put
和remove
哪种方法用于表现?
答案 0 :(得分:5)
除非您需要订购,否则请使用HashMap
。 HashMap
更快。
也就是说,您可以使用通用接口作为声明来轻松切换:
Map<String,String> M = new HashMap<String,String>();
...use M lots of places...
然后你只需要切换一个地方,你的代码就会使用新的地图类型。
简单的时间测试:
import java.util.*;
class TimingTest {
public static void main(String[] args) {
Map<String,String> M = new HashMap<String,String>();
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
M.put(Integer.toString(i), "foo");
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
答案 1 :(得分:0)
这取决于哈希和比较函数在地图中的键上的速度。这取决于你是否对平均案例表现或最坏情况表现更感兴趣。这取决于你是否有一个很好的哈希函数应用于你的地图的键;哈希值应该在哈希函数的域中很好地分布(是的,它可以取决于你的数据)。
一般情况下(当你不能打扰测试时),哈希映射通常是一个很好的答案,但如果你没有数千个条目(对于小尺寸,也不太可能产生很大的影响) “vec map”也可以很好地工作。)
答案 2 :(得分:0)
在迭代方面,这取决于您的意图:
Futhermore,用于放置/获取/删除/包含键的时间复杂度:
Geekforgeeks:
StackOverflow: