gpt4 book ai didi

java - 使用自定义比较器在 Java 中创建 SortedMap

转载 作者:IT老高 更新时间:2023-10-28 20:46:21 27 4
gpt4 key购买 nike

我想在 Java 中创建一个具有自定义排序顺序的 TreeMap。排序后的键是字符串,需要根据第二个字符进行排序。值也是字符串。

示例 map :

Za,FOO
Ab,Bar

最佳答案

您可以像这样使用自定义比较器:

    Comparator<String> secondCharComparator = new Comparator<String>() {
@Override public int compare(String s1, String s2) {
return s1.substring(1, 2).compareTo(s2.substring(1, 2));
}
};

示例:

    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}"

请注意,这只是假设 String 在索引 1 处有一个字符。如果没有,它会抛出 StringIndexOutOfBoundsException


或者,您也可以使用这种比较:

return s1.charAt(1) - s2.charAt(1);

这个减法“技巧”通常被破坏,但它在这里工作正常,因为两个 char 的减法不会溢出 int

不过,上面的 substringcompareTo 解决方案更具可读性。

另见:

关于java - 使用自定义比较器在 Java 中创建 SortedMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2748829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com