Преобразовать строку с разделителями в длинные с разделителями в соответствии с отображением строки в длинные

У меня есть строка:

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());
Другие вопросы по тегам