unj*_*nj2 21 java sorting string treemap comparator
我想TreeMap用Java 创建一个自定义排序顺序.需要根据第二个字符对作为字符串的排序键进行排序.值也是字符串.
示例地图:
Za,FOO
Ab,Bar
Run Code Online (Sandbox Code Playgroud)
pol*_*nts 32
您可以使用这样的自定义比较器:
Comparator<String> secondCharComparator = new Comparator<String>() {
@Override public int compare(String s1, String s2) {
return s1.substring(1, 2).compareTo(s2.substring(1, 2));
}
};
Run Code Online (Sandbox Code Playgroud)
样品:
SortedMap<String,String> map =
new TreeMap<String,String>(secondCharComparator);
map.put("Za", "FOO");
map.put("Ab", "BAR");
map.put("00", "ZERO");
System.out.println(map); // prints "{00=ZERO, Za=FOO, Ab=BAR}"
Run Code Online (Sandbox Code Playgroud)
请注意,这只是假设String索引为1的字符.StringIndexOutOfBoundsException如果不是则抛出.
或者,您也可以使用此比较:
return s1.charAt(1) - s2.charAt(1);
Run Code Online (Sandbox Code Playgroud)
这个减法"技巧"一般会被打破,但它在这里工作正常,因为减去两个char不会溢出int.
但是substring,compareTo上面的解决方案更具可读性.
| 归档时间: |
|
| 查看次数: |
40425 次 |
| 最近记录: |