How to ignore the case sensitive when we look for a key in the Map?

Possible Duplicate:
Is there a good way to have a Map<String, ?> get and put ignoring case?

How to ignore case sensitive when searching a key in the java.util.Map?

I want to know whether we can look up for a key in the map by ignoring the case.

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

The user input might be "ONE" or "one". in such a case instead of converting the user input to lowercase. is there is any way to ignore the key sensitive via any methods?

Thanks, Kathir


Why not use a TreeMap instead of HashMap , then you could specify a Comparator with a case insensitive order ( 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"));
}

Outputs:

2
3

HashMap uses the key's equals(Object) method (in combination with hashCode() ), and String.equals() is case-sensitive. So if you want a case-insensitive key, you have to define your own key class with a proper equals() and hashCode() . In total, is possibly easier to use toLowerCase() on all key strings.

链接地址: http://www.djcxy.com/p/92190.html

上一篇: 用于原始值的替代映射

下一篇: 如何在Map中查找关键字时忽略大小写?