Author: [log in to unmask] Date: Wed Sep 2 23:41:16 2015 New Revision: 3502 Log: Use maps for quicker access to enum constants by name and type value. The maps are filled using a static block. Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/StrategyType.java Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/StrategyType.java ============================================================================= --- java/trunk/tracking/src/main/java/org/hps/recon/tracking/StrategyType.java (original) +++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/StrategyType.java Wed Sep 2 23:41:16 2015 @@ -1,4 +1,7 @@ package org.hps.recon.tracking; + +import java.util.HashMap; +import java.util.Map; /** * Enum constants for different {@link Track}s based on what tracking @@ -35,7 +38,21 @@ S123_C5_E46(5); private int type; + + /** Map from an enum constant value to an enum constant */ + private static Map<Integer, StrategyType> typeValueMap = new HashMap<Integer, StrategyType>(); + + /** Map from an enum constant name to an enum constant */ + private static Map<String, StrategyType> typeNameMap = new HashMap<String, StrategyType>(); + /** Static block used to fill all maps */ + static { + for (StrategyType strategyType : StrategyType.values()) { + typeValueMap.put(strategyType.getType(), strategyType); + typeNameMap.put(strategyType.name(), strategyType); + } + } + /** Constructor */ StrategyType(int type) { this.type = type; @@ -59,10 +76,21 @@ * null if it doesn't exist. */ public static StrategyType getType(String name) { - for (StrategyType strategyType : values()) { - if (strategyType.name().equals(name)) return strategyType; - } - return null; + return typeNameMap.get(name); + } + + /** + * Returns the {@link StrategyType} with the specified type value. If a + * {@link StrategyType} with that type value doesn't exist, it returns + * null. + * + * @param typeValue The type value of the StrategyType enum constant to + * return + * @return The {@link StrategyType} enum constant with the given type + * value or null if it doesn't exist. + */ + public static StrategyType getType(int typeValue) { + return typeValueMap.get(typeValue); } /**