[英]Why is my TreeMap not sorting?
我使用了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);
我希望输出像这样排序:
map:{Hello = 1,world = 2,Zertt = 5}
但相反,我得到了这个:
map:{Hello = 1,Zertt = 5,world = 2}
String
s的自然顺序区分大小写,因此Z
在w
之前出现(所有大写字母都在小写字母之前)。
使用
TreeMap<String, Integer> m = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
对于不区分大小写的顺序。
如前所述,字符串自然顺序区分大小写。 但是,如果你想要insentive排序,你可以提供比较器作为TreeMap构造函数参数:
Map<String, Integer> m = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
ps注意,当使用案例因果顺序键时也会比较insentive:
m.put("Hello", 1);
m.put("helLo", 6);
结果是6,关键是Hello
也许这些信息会有所帮助。
在类TreeMap中包含构造函数:
TreeMap()
TreeMap(比较器comp)
TreeMap(地图m)
TreeMap(SortedMap sm)
第一个构造函数创建一个集合,其中所有元素按其键的自然顺序排序。
第二个构造函数创建一个空集合,其元素将根据法律进行排序,该法则在传输比较器中定义。
第三个构造函数基于现有Map创建TreeMap。
第四个构造函数基于现有的SortedMap创建一个TreeMap,其元素将根据法律传输的SortedMap进行排序。
注意用于排序的键,而不是值。
树形图中的排序基于键的自然顺序而不是值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.