- java集合类图
- HashMap和Hashtable的区别
HashMap | HashTable | |
继承方式 |
extends AbstractMap implements Map |
extends Dictionary implements Map |
线程安全 | 否 | 是(方法都是synchronized修饰) |
效率相对比 | 高 | 低 |
允许有null的键和值 | 是 | 否 |
判断包含的方法 | containsvalue和containsKey | contains |
hash数组默认大小 |
11 |
16 |
hash数组增加方式 |
old*2+1 |
2的指数增加 |
- List的遍历
List<String> list = new ArrayList<String>(); String preString = "aa";
for (int j = 0; j < 100000000; j++) {
list.add(preString);
} // 方法1(速度最快,List特有的)
for (int i = 0, len = list.size(); i < len; i++) {
list.get(i);
} // 方法2 (for each-最耗时)
for (String tmp : list) {
} // 方法3(与方法2,4一样,适用所有实现了Iterable接口的类,常见的有:Queue,Set,Collection,List)
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String str = iter.next();
} // 方法4
for (Iterator<String> it2 = list.iterator(); it2.hasNext();) {
String str = it2.next();
}
2.map的遍历
HashMap<Integer, String> map = new HashMap<>();
String v = "value";
for(int i=0;i<10000000;i++){
map.put(i, v);
} //方法1,
Iterator<Map.Entry<Integer, String>> it1= map.entrySet().iterator();
while (it1.hasNext()) {
Map.Entry<Integer, String> entry =it1.next();
int key = entry.getKey();
String value = entry.getValue();
} //方法2 获取map的key集合的迭代器,耗时是方法1的7倍。
Iterator<Integer> it2 = map.keySet().iterator();
while(it2.hasNext()){
int key = it2.next();
String value = map.get(key);
}