2016-08-03 18 views
1

Ich habe eine Zeichenfolge nach Long-Mapping begrenzt:Convert begrenzt String Lange als pro String

My name is amit 

und eine Zuordnung:

My -> 1121 
name -> 1122 
is -> 1123 
amit -> 1124 

Ich möchte zurück:

1121 1122 1123 1124 

wobei jedes Wort dem entsprechenden langen Wert zugeordnet ist, der in einer HashMap gespeichert ist.

Hier ist meine Version:

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

ich das in Java tue 8. Kann es für diese bessere Ansatz. Vielen Dank!

+0

Welche Rolle Sie Probleme, mit sind? – resueman

+0

Die Frage nach "bestem Ansatz" wäre meinungsbasiert. Außerdem spielt es kaum eine Rolle, wie man etwas so Einfaches macht. – Kayaman

+0

Aktualisiert meine Frage. Mein Schlechter, ich habe mich nur verspätet. –

Antwort

1

würde ich die Eingabezeichenfolge geteilt, es durch eine Abbildungsfunktion streamen, die den Wert von der Karte nimmt und es dann sammeln zurück:

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