5.21. Retrieving Map Values Without Casting
Problem
You need to retrieve a primitive
double
from a Map
, but the
value is stored as a Double
object.
Solution
Use MapUtils.getDoubleValue()
to retrieve a Double
object from a Map
as a double
primitive. The following example demonstrates
getDoubleValue( )
:
import java.util.*; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.collections.MapUtils; Object[] mapArray = new Object[][] { { "A", new Double( 2.0 ) }, { "B", new Double( 0.223242 ) }, { "C", new Double( 2828e4 ) }, { "D", "GARBAGE"} }; Map numberMap = ArrayUtils.toMap( mapArray ); double a = MapUtils.getDoubleValue( numberMap, "A" ); double b = MapUtils.getDoubleValue( numberMap, "B" ); double c = MapUtils.getDoubleValue( numberMap, "C" ); double d = MapUtils.getDoubleValue( numberMap, "D", new Double( Double.NaN ) ); System.out.println( "A = " + a ); System.out.println( "B = " + b ); System.out.println( "C = " + c ); System.out.println( "D = " + d );
This simple utility retrieves four doubles from
numberMap
; the fourth call to
getDoubleValue( )
supplies a default
double
to be returned if the
value’s type cannot be converted to a
double
. This example produces the following
output:
A = 2.0 B = 0.223242 C = 28280.0 D = NaN
Discussion
This utility is laughably simple, but if you are working with
numbers, this utility can help you avoid casting and calling
doubleValue( )
. In addition to
MapUtils.getDoubleValue( )
,
MapUtils
also contains the
MapUtils.getDouble( ) ...
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.