Создайте карту из строковых ключей для цифровых клавиш:
Map<String, Integer> keyMap = new HashMap<String, Integer>();
keyMap.put("a", o);
// etc
Затем создайте список ваших объектов, где MyObject - это тип значения:
List<MyObject> theList = new ArrayList<MyObject>();
Доступ поцелое число:
MyObject obj = theList.get(0);
Доступ по строке
MyObject obj = theList.get(keyMap.get("a"));
Это требует ведения структуры ключевых данных, но позволяет получить доступ к вашим значениям из одной структуры данных.
Выможет инкапсулировать то, что есть в классе, если вам нравится:
public class IntAndStringMap<V> {
private Map<String, Integer> keyMap;
private List<V> theList;
public IntAndStringMap() {
keyMap = new HashMap<String, Integer>();
theList = new ArrayList<V>();
}
public void put(int intKey, String stringKey, V value) {
keyMap.put(stringKey, intKey);
theList.ensureCapacity(intKey + 1); // ensure no IndexOutOfBoundsException
theList.set(intKey, value);
}
public V get(int intKey) {
return theList.get(intKey);
}
public V get(String stringKey) {
return theList.get(keyMap.get(stringKey));
}
}