vijay.shad vijay.shad - 1 year ago 51
Java Question

Easiest way to get Enum in to Key Value pair

I have defined my Enums like this.

public enum UserType {




private String name;

private UserType(String name) { = name;

public String getName() {
return name;


What should be the easiest way to get a key-value pair form the enum values?

The output map i want to create should be like this

key = Enum(example:- HOST)
value = Host

The map I want do define is

Map<String, String> constansts = new HashMap<String, String>();

Ans: What I Did

I have created a Generic Method to access any enum and change values from that to a Map. I got this IDEA, form a code fragment found at here in any other thread.

public static <T extends Enum<T>> Map<String, String> getConstantMap(
Class<T> klass) {

Map<String, String> vals = new HashMap<String, String>(0);

try {
Method m = klass.getMethod("values", null);
Object obj = m.invoke(null, null);

for (Enum<T> enumval : (Enum<T>[]) obj) {
vals.put(, enumval.toString());

} catch (Exception ex) {
// shouldn't happen...

return vals;

Now, After this all I have to do is call this method with all the enum constructs and i am Done.

One More thing

To get This done i have to orverride the toString Method like this

public String toString() {
return name;


Answer Source

Provided you need to map from the textual values to the enum instances:

Map<String, UserType> map = new HashMap<String, UserType>();
map.put(RESELLER.getName(), RESELLER);
map.put(HOST.getName(), HOST);

or a more generic approach:

for (UserType userType : UserType.values()) {
    map.put(userType.getName(), userType);