Заполнение хэш-карты с предопределенными значениями (Java)
Я столкнулся с проблемой, с которой раньше не сталкивался. Я пишу патч для базы данных в Java, которая в основном конвертирует данные, хранящиеся в определенных строках. Для того, чтобы сделать это, у меня есть таблица преобразования, которая говорит мне, какие значения становятся чем.
Например, если я читаю в "RC", "AC", "GH" -> Обновить значение до "T1". (Это просто случайные примеры, это в основном преобразование одной строки в другую.)
Мне нужен хороший способ хранения этих конверсий. Я думал о хэш-карте: KEY,VALUE: (RC,T1) (AC,T1) (GH,T1) и так далее, и так далее.
Теперь есть десятки и десятки из них. Какой хороший чистый способ заполнить эту хэш-карту при инициализации патча?
4 ответа
Я бы сделал инициализацию при настройке HashMap
Например
private static final Map<String, String> m = new HashMap<String, String>() {{
put("RC", "T1");
put("AC", "T1");
}};
Затем вы убедитесь, что в вашем коде все настроено вместе.
Я думаю, что @Nambari делает хорошую мысль, хотя, возможно, имеет значение в виде списка, а не просто строки. Это тогда поменяет ваши ключи и значения, хотя.
например
private static final Map<String, List<String>> m = new HashMap<String, List<String>>() {{
put("T1", Arrays.asList("RC", "AC");
}};
С Java 11 вы можете использовать
Map.of("RC", "T1", "AC", "T1");
Вы можете использовать PropertiesConfiguration из Apache Commons.
Значение может содержать разделители значений и будет интерпретироваться как список токенов. Разделителем значения по умолчанию является запятая ','. Итак, следующее определение свойства
key = This property, has multiple, values
Может быть другой путь, список RC,AC,GH
в качестве значения и T1 в качестве ключа для hashmap, таким образом, вы можете уменьшить количество записей в карте.