Преобразовать строку с разделителями в длинные с разделителями в соответствии с отображением строки в длинные
У меня есть строка:
My name is amit
и отображение:
My -> 1121
name -> 1122
is -> 1123
amit -> 1124
Я хочу вернуться
1121 1122 1123 1124
где каждое слово сопоставлено с его соответствующим длинным значением, которое содержится в HashMap.
Вот моя версия:
public String delimtedStringToLong(String input, String delimiter, Map<String, Long> map) {
String[] arr = input.split(delimiter);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
sb.append(String.valueOf(map.get(arr[i])) + delimiter);
}
return sb.toString();
}
Я делаю это в Java 8. Может ли быть лучший подход для этого. Спасибо!
1 ответ
Решение
Я бы разделил входную строку, передал ее через функцию отображения, которая берет значение из карты, а затем собирал его обратно:
String input = "My name is amit";
Map<String, Long> map = new HashMap<>();
map.put("My", 1121L);
map.put("name", 1122L);
map.put("is", 1123L);
map.put("amit", 1124L);
String output =
Arrays.stream(input.split(" "))
.map(s -> String.valueOf(map.get(s)))
.collect(Collectors.joining());