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的遍历1List<String> list =newArrayList<String>();23StringPReString = "aa";4for(intj = 0; j < 100000000; j++) {5list.add(preString);6}78//方法1(速度最快,List特有的)9for(inti = 0, len = list.size(); i < len; i++) {10list.get(i);11}1213//方法2 (for each-最耗时)14for(String tmp : list) {15}1617//方法3(与方法2,4一样,适用所有实现了Iterable接口的类,常见的有:Queue,Set,Collection,List)18Iterator<String> iter =list.iterator();19while(iter.hasNext()) {20String str =iter.next();21}2223//方法424for(Iterator<String> it2 =list.iterator(); it2.hasNext();) {25String str =it2.next();26}
2.map的遍历
1HashMap<Integer, String> map =newHashMap<>();2String v = "value";3for(inti=0;i<10000000;i++){4map.put(i, v);5}67//方法1,8Iterator<Map.Entry<Integer, String>> it1=map.entrySet().iterator();9while(it1.hasNext()) {10Map.Entry<Integer, String> entry =it1.next();11intkey =entry.getKey();12String value =entry.getValue();13}1415//方法2 获取map的key集合的迭代器,耗时是方法1的7倍。16Iterator<Integer> it2 =map.keySet().iterator();17while(it2.hasNext()){18intkey =it2.next();19String value =map.get(key);20}21
set 和map的遍历方式类似,就不在这里啰嗦了。