特点:
K-V对,K和V都允许为null
不同步,多线程不安全
无序的
主要方法:clear,containsValue,containsKey,get,put,remove,size
推荐使用keyset遍历
package mooc;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapTest {
public static void main(String[] args) {
HashMap<Integer,String > hm = new HashMap<Integer, String>();
hm.put(1,null);
hm.put(null,"abc");
hm.put(1000,"aaa");
hm.put(2,"bbb");
hm.put(30000,"ccc");
System.out.println(hm.containsValue("aaa"));
System.out.println(hm.containsKey(30000));
System.out.println(hm.get(30000));
hm.put(30000,"ddd");
System.out.println(hm.get(30000));
hm.remove(2);
System.out.println("size:"+hm.size());
hm.clear();
System.out.println(hm);
HashMap<Integer,String> hm2 = new HashMap<Integer, String>();
for (int i = 0; i < 100000 ; i++) {
hm2.put(i,"aaa");
}
travelByEntry(hm2);
travelByKeySet(hm2);
}
private static void travelByEntry(HashMap<Integer, String> hm) {
long startTime = System.nanoTime();
System.out.println("====Entry迭代器遍历====");
Integer key;
String value;
Iterator<Map.Entry<Integer,String>> iter = hm.entrySet().iterator();
while (iter.hasNext()){
Map.Entry<Integer,String> entry = iter.next();
//获取key
key = entry.getKey();
//获取value
value = entry.getValue();
}
long endTime = System.nanoTime();
long duration = endTime-startTime;
System.out.println(duration+"纳秒");
}
public static void travelByKeySet(HashMap<Integer,String> hm){
long startTime = System.nanoTime();
System.out.println("====KeySet迭代器遍历====");
Integer key;
String value;
Iterator<Integer> iter = hm.keySet().iterator();
while (iter.hasNext()){
//获取key
key = iter.next();
//获取value
value = hm.get(key);
}
long endTime = System.nanoTime();
long duration = endTime-startTime;
System.out.println(duration+"纳秒");
}
}