目的
主要想測試一下HashMap、LinkedHashMap和TreeMap的有序性
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
/**
* 三種map是否有序測試:HashMap,LinkedMap,TreeMap
*
* @author Lynn
*
*/
public class TestMap {
public static void main(String[] args) {
Map<String,String> hashMap = new HashMap<String,String>();
Map<String,String> linkedHashMap = new LinkedHashMap<String,String>();
Map<String,String> treeMap = new TreeMap<String,String>();
//添加相同的數據;
hashMap.put("A", "A");
hashMap.put("B", "B");
hashMap.put("1", "1");
hashMap.put("2", "2");
linkedHashMap.put("A", "A");
linkedHashMap.put("B", "B");
linkedHashMap.put("1", "1");
linkedHashMap.put("2", "2");
treeMap.put("A", "A");
treeMap.put("B", "B");
treeMap.put("1", "1");
treeMap.put("2", "2");
Iterator iterator = hashMap.entrySet().iterator();
System.out.println("HashMap的輸出結果:");
while(iterator.hasNext()) {
Map.Entry<String, String> entity = (Entry<String, String>) iterator.next();
System.out.println("[ key="+entity.getKey()+" value="+entity.getValue()+"]");
}
iterator = linkedHashMap.entrySet().iterator();
System.out.println("LinkedMap的輸出結果:");
while(iterator.hasNext()) {
Map.Entry<String, String> entity = (Entry<String, String>) iterator.next();
System.out.println("[ key="+entity.getKey()+" value="+entity.getValue()+"]");
}
iterator = treeMap.entrySet().iterator();
System.out.println("TreeMap的輸出結果:");
while(iterator.hasNext()) {
Map.Entry<String, String> entity = (Entry<String, String>) iterator.next();
System.out.println("[ key="+entity.getKey()+" value="+entity.getValue()+"]");
}
}
}
運行結果:
結論
共同點:
HashMap,LinkedHashMap,TreeMap都屬於Map;Map 主要用於存儲鍵(key)值(value)對,根據鍵得到值,因此鍵不允許鍵重復,但允許值重復。
不同點:
- HashMap里面存入的鍵值對在取出的時候是隨機的,也是我們最常用的一個Map.它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。
- TreeMap取出來的是排序后的鍵值對。但如果您要按自然順序(字典順序),那么TreeMap會更好。
- LinkedHashMap 是HashMap的一個子類,如果需要輸出的順序和輸入的相同,那么用LinkedHashMap可以實現。
參考
https://blog.csdn.net/u012889434/article/details/48055679/