Если не существует ни правила, ни регулярности замены String (я не нахожу ни одного), то вам нужна либо таблица сопоставления, хранящаяся в БД, либо состояние c Map<String, String>
этих констант:
- Я рекомендую
Map
в случае небольшого количества из них, и они не будут часто меняться. - Я рекомендую читать из БД в случае их большого количества. Это также позволяет вам изменять отображение при запуске без необходимости создавать и повторно развертывать все приложение.
С точки зрения структуры данных, на основе словаря будет лучшим способом go - Map<String, String>
. Он не позволяет хранить дублированные ключи и прост в использовании для преобразования:
List<String> listOfStringsToBeReplaced = loadFromSomewhere();
Map<String, String> map = loadFromDb();
List<String> listWithReplacedStrnigs = listOfStringsToBeReplaced.stream()
.map(string -> map.getOrDefault(string, string))
.collect(Collectors.toList());
Я использую Map::getOrDefault
, чтобы либо заменить значение, либо сохранить его как есть, если сопоставление не найдено.