根据String到Long映射,将分隔的String转换为分隔的Long

时间:2016-08-03 18:05:04

标签: java string java-8 delimited-text

我有一个字符串:

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 个答案:

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