如何在Map中查找关键字时忽略大小写?
可能重复:
有没有一种好的方法来让Map <String,?>获取并忽略大小写?
如何在java.util.Map中搜索键时忽略大小写?
我想知道我们是否可以通过忽视案例来查找地图中的关键字。
Example,
Map<String, Integer> lookup = new HashMap<String, Integer>();
lookup.put("one", 1);
lookup.put("two", 2);
lookup.put("three", 3);
用户输入可能是“一个”或“一个”。 在这种情况下,而不是将用户输入转换为小写。 是否有任何方法可以通过任何方法忽略敏感键?
谢谢,凯瑟尔
为什么不使用TreeMap
而不是HashMap
,那么你可以指定一个大小写不敏感的比较器( String.CASE_INSENSITIVE_ORDER
):
public static void main(String[] args) throws Exception {
Map<String, Integer> lookup =
new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
lookup.put("One", 1);
lookup.put("tWo", 2);
lookup.put("thrEE", 3);
System.out.println(lookup.get("Two"));
System.out.println(lookup.get("three"));
}
输出:
2
3
HashMap
使用键的equals(Object)
方法(结合hashCode()
),并且String.equals()
区分大小写。 所以如果你想要一个不区分大小写的键,你必须用适当的equals()
和hashCode()
定义你自己的键类。 总之,在所有关键字符串上使用toLowerCase()
可能更容易。
上一篇: How to ignore the case sensitive when we look for a key in the Map?