Java / Collections
Does HashSet ignore String case when contains() method is invoked in Java?
HashSet's contains() method is case sensitive and does not allow the use of comparators.
We could use TreeSet instead of HashSet which allow Comparator thus facilitating case-insensitive search and comparison. Using the comparator String.CASE_INSENSITIVE_ORDER we could perform case ignored search.
In the below example search for 'A' at the Hashset fails since the set has the all the elements in lower case. However the same search at the TreeSet finds the element using the String.CASE_INSENSITIVE_ORDER comparator.
public static void main(String[] args) { List<String> inputList = Arrays.asList(new String[] { "a", "b", "c" }); /****************************************/ // HashSet Does not ignore the case. Set<String> hashSet = new HashSet<String>(); hashSet.addAll(inputList); System.out .println("Does Hashset has value A? " + hashSet.contains("A")); /****************************************/ // TreeSet Does not ignore the case. Set<String> treeSetCaseIgnored = new TreeSet<String>( String.CASE_INSENSITIVE_ORDER); treeSetCaseIgnored.addAll(inputList); /****************************************/ System.out.println("Does Hashset has value A? " + treeSetCaseIgnored.contains("A")); /****************************************/ }
More Related questions...