2016-08-03 59 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());