标签:
HashMap | HashTable | |
继承方式 |
extends AbstractMap implements Map |
extends Dictionary implements Map |
线程安全 | 是 | 否 |
效率相对比 | 高 | 低 |
允许有null的键和值 | 是 | 否 |
判断包含的方法 | containsvalue和containsKey | contains |
hash数组默认大小 |
11,
|
16,
|
hash数组增加方式 |
old*2+1 |
2的指数增加 |
1 List<String> list = new ArrayList<String>(); 2 3 String preString = "aa"; 4 for (int j = 0; j < 100000000; j++) { 5 list.add(preString); 6 } 7 8 // 方法1(速度最快,List特有的) 9 for (int i = 0, len = list.size(); i < len; i++) { 10 list.get(i); 11 } 12 13 // 方法2 (for each-最耗时) 14 for (String tmp : list) { 15 } 16 17 // 方法3(与方法2,4一样,适用所有实现了Iterable接口的类,常见的有:Queue,Set,Collection,List) 18 Iterator<String> iter = list.iterator(); 19 while (iter.hasNext()) { 20 String str = iter.next(); 21 } 22 23 // 方法4 24 for (Iterator<String> it2 = list.iterator(); it2.hasNext();) { 25 String str = it2.next(); 26 }
2.map的遍历
1 HashMap<Integer, String> map = new HashMap<>(); 2 String v = "value"; 3 for(int i=0;i<10000000;i++){ 4 map.put(i, v); 5 } 6 7 //方法1, 8 Iterator<Map.Entry<Integer, String>> it1= map.entrySet().iterator(); 9 while (it1.hasNext()) { 10 Map.Entry<Integer, String> entry =it1.next(); 11 int key = entry.getKey(); 12 String value = entry.getValue(); 13 } 14 15 //方法2 获取map的key集合的迭代器,耗时是方法1的7倍。 16 Iterator<Integer> it2 = map.keySet().iterator(); 17 while(it2.hasNext()){ 18 int key = it2.next(); 19 String value = map.get(key); 20 } 21
set 和map的遍历方式类似,就不在这里啰嗦了。
标签:
原文地址:http://www.cnblogs.com/boxrotbot/p/4968416.html