Jos*_*hua 61 java map case-insensitive
是否有一个很好的方法来Map<String, ?>
获得并放弃忽略案例?
vol*_*ley 62
TreeMap扩展了Map并支持自定义比较器.
String提供默认的不区分大小写的比较器.
所以:
final Map<String, ...> map = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
Run Code Online (Sandbox Code Playgroud)
比较器不考虑区域设置.在JavaDoc中阅读更多相关信息.
Eri*_*nau 42
您可以使用Apache的Commons Collections中的CaseInsensitiveMap.
Gui*_*ido 31
是否可以实现自己的Map覆盖put/get方法?
public class CaseInsensitiveMap extends HashMap<String, String> {
...
put(String key, String value) {
super.put(key.toLowerCase(), value);
}
get(String key) {
super.get(key.toLowercase());
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法不会强迫您更改"密钥"类型,而是使用Map实现.
Joh*_*n M 14
您需要一个String键的包装类,它具有不区分大小写的equals()和hashCode()实现.使用它代替Map的键的String.
请参阅http://www.java.happycodings.com/Java_Util_Package/code3.html上的示例实现. 我在2分钟的谷歌搜索中找到了它.虽然我从未使用它,但对我来说看起来很明智.