gpt4 book ai didi

Java TreeMap(比较器)和忽略比较器的get方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:16 25 4
gpt4 key购买 nike

public final Comparator<String> ID_IGN_CASE_COMP = new Comparator<String>() {

public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
};

private Map< String, Animal > _animals = new TreeMap< String, Animal >(ID_IGN_CASE_COMP);

我的问题是,如何使用方法 get(id) 忽略给定的比较器。我希望 map 按不区分大小写的顺序排序,但是,我希望它在按给定键获取值时区分大小写。

最佳答案

我认为答案很简单。实现您自己的比较器,该比较器执行不区分大小写的排序,但为“A”和“a”返回 0...也对它们进行排序。

问题是您的比较器在 compare( "A", "a") 情况下返回 0,这意味着就 map 而言它是相同的键。

使用像这样的比较器:

public final Comparator<String> ID_IGN_CASE_COMP = new Comparator<String>() {

public int compare(String s1, String s2) {
int result = s1.compareToIgnoreCase(s2);
if( result == 0 )
result = s1.compareTo(s2);
return result;
}
};

然后所有键将不分大小写进入,并且“a”和“A”仍将一起排序。

换句话说,get("a") 会为您提供与 get("A") 不同的值...并且它们都将出现在 keySet() 迭代器中。它们将被放在一起。

关于Java TreeMap(比较器)和忽略比较器的get方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782674/

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