2016-08-03 7 views
1

У меня есть строка:Преобразовать разделителями Строка с разделителями Длинные согласно строки Лонг отображения

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. Может ли быть лучше подходят для этого. Благодаря!

+0

Какую роль вы возникли проблемы с? – resueman

+0

Просьба о «наилучшем подходе» будет основана на мнениях. Кроме того, вряд ли имеет значение, что вы используете, чтобы сделать что-то столь же простое, как это. – Kayaman

+0

Обновлен мой вопрос. Мой плохой, просто задержался. –

ответ

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());