Map.keySet()排序问题

时间:2022-10-17 19:15:42

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

结论:按 插入顺序