Звучит так, как будто вы хотите использовать клавишу строки, клавишу col, а затем значение в этом месте. Нет встроенной структуры данных, которая сделает это за вас.
Самым простым в использовании может быть двухмерный массив для реальных данных. Используйте что-то вроде следующего, чтобы перейти от имени строки или столбца к фактическому индексу в вашем массиве. Добавьте столько привязок имени к индексу, сколько хотите.
Map<String, Integer> rows = new HashMap<String, Integer>();
Map<String, Integer> cols = new HashMap<String, Integer>();
Тогда получим это значение в сетке ...
grid[rows.get("Row name")][cols.get("Column name")];
Поместите сетку и метод get(String rowName, String colName)
в класс, если вы хотите более чистый API.
Редактировать: Я вижу, что вопрос был обновлен, и похоже, что пары имя-индекс одинаковы для строк и столбцов. Итак, вот обновленная версия:
class SquareMap<V> {
private V[][] grid;
private Map<String, Integer> indexes;
public SquareMap(int size) {
grid = (V[][]) new Object[size][size];
indexes = new HashMap<String, Integer>();
}
public void setIndex(String name, int index) {
indexes.put(name, index);
}
public void set(String row, String col, V value) {
grid[indexes.get(row)][indexes.get(col)] = value;
}
public V get(String row, String col) {
return grid[indexes.get(row)][indexes.get(col)];
}
}