Java 为什么我的树形图没有排序?
我使用了一个Java 为什么我的树形图没有排序?,java,treemap,Java,Treemap,我使用了一个TreeMap,其中键是String,值的类型是Integer。当我输出Map对象时,它没有按排序顺序打印 以下是我使用的代码: TreeMap<String, Integer> m = new TreeMap<String, Integer>(); m.put("Hello", 1); m.put("world", 2); m.put("Zertt", 5); m.put("Hello", 1); m.put("world", 2); System.out.
TreeMap
,其中键是String
,值的类型是Integer
。当我输出Map
对象时,它没有按排序顺序打印
以下是我使用的代码:
TreeMap<String, Integer> m = new TreeMap<String, Integer>();
m.put("Hello", 1);
m.put("world", 2);
m.put("Zertt", 5);
m.put("Hello", 1);
m.put("world", 2);
System.out.println("map : " + m);
TreeMap m=newtreemap();
m、 放入(“你好”,1);
m、 put(“世界”,2);
m、 put(“Zertt”,5);
m、 放入(“你好”,1);
m、 put(“世界”,2);
System.out.println(“映射:+m”);
我希望输出按如下方式排序:
地图:{Hello=1,world=2,Zertt=5}
但我得到的却是:
地图:{Hello=1,Zertt=5,world=2}
String
s的自然顺序区分大小写,因此Z
在w
之前(所有大写字母在所有小写字母之前)
使用
TreeMap m=newtreemap(String.CASE不区分大小写\u顺序);
对于不区分大小写的顺序。树映射中的排序基于键的自然顺序,而不是值 说: 映射根据其键的自然顺序进行排序,或者由映射创建时提供的比较器进行排序,具体取决于使用的构造函数
编辑:Eran的答案是正确的,字符串顺序默认区分大小写。正如在字符串自然顺序区分大小写之前回答的那样。但是,如果您想要不敏感的排序,您可以提供comparator作为TreeMap构造函数参数:
Map<String, Integer> m = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
结果是6,键是
Hello
也许这个信息会有帮助
在类TreeMap中包含构造函数:
Map<String, Integer> m = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
m.put("Hello", 1);
m.put("helLo", 6);