你将如何在java8中将方法转换为单行

swa*_*wan 2 java collections java-8 java-stream

我有以下方法将单行转换为地图

并想使用 java8 将其转换为单行语句

输入管道分隔的字符串,例如:status:MYSTATUS|data1:value1

public Map<String, String> getMap(String attributeUpdate){
    Map<String, String> attr = new HashMap<>();
    if(StringUtils.isNotEmpty(attributeUpdate)){
        List<String> a = Arrays.asList(attributeUpdate.split("\\|"));
        for (String s : a) {
            String[] key_val = s.split(":");
            if(key_val.length == 2) {
                attr.put(key_val[0], key_val[1]);
            }
        }
    }
    return attr;
}
Run Code Online (Sandbox Code Playgroud)

Sri*_*amy 6

请尝试以下代码。它工作正常。

String s = new String("status:MYSTATUS|data1:value1");
Arrays.stream(s.split("\\|")).map(stringArray -> stringArray.split(":"))
        .filter(stringArray -> stringArray.length == 2)
        .collect(Collectors.toMap(stringArray ->stringArray[0], stringArray-> stringArray[1],(oldvalue,newvalue)->newvalue));
Run Code Online (Sandbox Code Playgroud)

谢谢

  • 您可以使用“Arrays.stream(…)”代替“Arrays.asList(…).stream()”。 (5认同)