Map.keySet()方法把key映射到Set里,其是否有序,文档没有明确说明,今天我做了试验,具体如下:
public static void main(String[] args) {
Map<String ,String> m = new HashMap<String ,String>();
m.put("1", "a");
m.put("2", "d");
m.put("3", "c");
m.put("8", "os");
m.put("6", "six");
m.put("4", "ye");
m.put("7", "this");
m.put("5", "fiv");
for( String s : m.keySet() )
System.out.println(s);
}
Result:
2
1
7
6
5
4
8
结论:乱序
public static void main(String[] args) {
Hashtable<String ,String> m = new Hashtable<String ,String>();
m.put("1", "a");
m.put("2", "d");
m.put("3", "c");
m.put("8", "os");
m.put("6", "six");
m.put("4", "ye");
m.put("7", "this");
m.put("5", "fiv");
for( String s : m.keySet() )
System.out.println(s);
}
Result:
6
5
4
3
2
1
8
7
结论:乱序
public static void main(String[] args) {
TreeMap<String ,String> m = new TreeMap<String ,String>();
m.put("1", "a");
m.put("2", "d");
m.put("3", "c");
m.put("8", "os");
m.put("6", "six");
m.put("4", "ye");
m.put("7", "this");
m.put("5", "fiv");
for( String s : m.keySet() )
System.out.println(s);
}
Result:
1
2
3
4
5
6
7
8
结论:升序
public static void main(String[] args) {
LinkedHashMap<String ,String> m = new LinkedHashMap<String ,String>();
m.put("2", "d");
m.put("3", "c");
m.put("8", "os");
m.put("6", "six");
m.put("4", "ye");
m.put("7", "this");
m.put("5", "fiv");
m.put("1", "a");
for( String s : m.keySet() )
System.out.println(s);
}
Result:
2
3
8
6
4
7
5
1
结论:按 插入顺序