当我们在Map中查找键时,如何忽略区分大小写?

Kat*_*hir 13 java

可能重复:
是否有一个很好的方法来获得Map <String,?> get和put ignore case?

在java.util.Map中搜索键时如何忽略区分大小写?

我想知道我们是否可以忽略这个案例来查找地图中的密钥.

Example,
   Map<String, Integer> lookup = new HashMap<String, Integer>();   
   lookup.put("one", 1);   
   lookup.put("two", 2);   
   lookup.put("three", 3); 
Run Code Online (Sandbox Code Playgroud)

用户输入可以是"ONE"或"one".在这种情况下,而不是将用户输入转换为小写.是否有任何方法可以通过任何方法忽略关键敏感?

谢谢,凯西尔

dac*_*cwe 59

为什么不使用a TreeMap代替HashMap,那么你可以用不区分大小写的顺序指定一个Comparator(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"));
}
Run Code Online (Sandbox Code Playgroud)

输出:

2
3
Run Code Online (Sandbox Code Playgroud)

  • hashMap性能为O(1)&TreeMap性能O(log(n))读取此问题http://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap (3认同)
  • 这真的很好看也很棒...非常感谢... (2认同)