5.12. Using a Case-Insensitive Map
Problem
You need to use a Map
with
String
keys that will
ignore the capitalization of a key when
retrieving a value.
Solution
Use a
CaseInsensitiveMap
from the Commons Collections. This implementation of
Map
takes String
keys and
provides case-insensitive access. An entry with a key
“Test” can be retrieved with the
strings “TEST,”
“test,” and
“tEST.” Here is a small example
demonstrating the case insensitivity:
import java.util.*; import org.apache.commons.collection.map.CaseInsensitiveMap; Map grades = new CaseInsensitiveMap( ); grades.put( "Fortney", "B-" ); grades.put( "Puckett", "D+" ); grades.put( "Flatt", "A-" ); String grade1 = (String) grades.get( "puckett" ); String grade2 = (String) grades.get( "FLATT" );
In this example, the grades are stored with a capitalized last name, and the results are retrieved with irregularly capitalized last names. This example returns the grades for “Puckett” and “Flatt” even though they were retrieved with “puckett” and “FLATT.”
Discussion
Example 5-12 demonstrates the use of
CaseInsensitiveMap
to access state names by state
abbreviations regardless of capitalization. This is useful when an
application is requesting a state from a user in a form to capture an
address. If a user enters “il,”
“IL,” or
“Il,” you need to be able to return
“Illinois.”
Example 5-12. Using a CaseInsensitiveMap for U.S. states
package com.discursive.jccook.collections.insensitive; import java.util.Map; import org.apache.commons.collections.map.CaseInsensitiveMap; ...
Get Jakarta Commons Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.