简而言之,最最最简而言之。
当我们把元素一个一个put进map后,再遍历。
- HashMap 是乱序的
- TreeMap 会按照一定的规则排序(规则可以传入构造)
- LinkedHashMap 会保持你注入map的顺序
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;
public class TestMaps {
public static void main(String[] args) {
Map hashmap = new HashMap();
putMap(hashmap);
printMap(hashmap); //乱序排序
// //测试treeMap
Map treemap = new TreeMap();
putMap(treemap);
printMap(treemap); //结果默认按照key进行升序排序了,破坏了插入的顺序
//测试linkedmap
Map linkedmap = new LinkedHashMap();
putMap(linkedmap);
printMap(linkedmap); //排序保持着插入顺序
}
public static void putMap(Map map){
Random random = new Random();
System.out.println("这是插入的顺序..................");
for(int i=0;i<=10;i++){
int n=random.nextInt(1000);
map.put(n, n+"A");
System.out.print(n+"||");
}
System.out.println();
System.out.println("接下来是遍历出来的顺序...............");
}
public static void printMap(Map map){
StringBuffer sb = new StringBuffer();
//接下来遍历TreeMap
Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
Object key = entry.getKey();
sb.append(key).append("||");
}
System.out.println(sb.toString());
System.out.println();
}
}
这是HashMap插入的顺序………………
49||561||115||334||191||466||891||770||166||781||426||
接下来是遍历出来的顺序……………
49||426||770||115||191||561||334||891||781||466||166||这是TreeMap插入的顺序………………
271||454||547||388||260||830||637||314||310||841||170||
接下来是遍历出来的顺序……………
170||260||271||310||314||388||454||547||637||830||841||这是LinkedHashMap插入的顺序………………
782||145||300||149||648||193||728||80||522||819||690||
接下来是遍历出来的顺序……………
782||145||300||149||648||193||728||80||522||819||690||