Are there any advantages between List<CustomObject> and HashMap <String, Object>

hashmap, java, list

Solution

I think better is to have a custom Value class like this:

public class MyValue {
    enum Type {
       INT, STRING, BOOL;
    }
    private Type type; //Store the type of Object in Type Enum
    private Object value; //Store the value in Object

    public void setValue(int val) {
       type = Type.INT;
       value = new Integer(val);
    }
    public void setValue(String val) {
       type = Type.STRING;
       value = val;
    }
    public void setValue(boolean val) {
       type = Type.BOOL;
       value = new Boolean(val);
    }

    public String stringVal() {
        // check type to be STRING first
        return (String) value;
    }
    public int intVal() {
        // check type to be INT first
        return ((Integer) value.intValue());
    }
    public boolean booleanVal() {
        // check type to be BOOL first
        return ((Boolean) value.booleanValue());
    }
}

You will need to convert from Object to specific type based on `enum Type` in your getters.

Problem

I am trying to implement a solution (in Java 1.6) where i need to store some values (for a set of properties) and thinking in three options considering the following three (Any other idea is of course wellcome!) Option 1 Create a class (call it `Property`) that can store different type of objects (String, int, boolean...) and and work with the set of properties as a `List<Property>` Something like: ``` private String type; //Store the type of Object private String name; //Store the name of the property private String valueStr; //Store the String value private int valueInt; //Store the int value private boolean valueBool; //Store the boolean value ``` I dont really like the idea of having many properties and using only one of them. (only one of the values will be set per property) Option 2 Use `HashMap<String, Object>` and parse the type on each case. Have the good thing that you can get the `Property` by name Option 3 Use `HashMap<String, Property>` Where the String is the name of the property and you can get the value with the name and no need to parse. Questions are: Which of one you think is the best one? or if none of them are good i would like to hear other ideas Also is there any performance difference between the List and the HashMap? Thanks in advance for the help.

Original source