java通过stream实现字符串与map互转

题目如下

String data = "1:a,2:b,3:c";
1.编写一个方法将以上格式的字符串转换为一个map, key为:前的字符串, value为:后的字符串, 键值对用,分隔;
2.编写一个方法将上面生成的map还原成原始字符串,对key进行倒序


要求使用stream进行处理

这个string和map互转的问题如果不用 stream 会有很多方式处理,但是用了stream也有很多方式,但是想了一个完全用stream处理的方式如下

import java.util.Comparator;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;


public class TestData {

    public static void main(String[] args) {

        /**
         *
         * String data = "1:a,2:b,3:c";
         * 1.编写一个方法将以上格式的字符串转换为一个map, key为:前的字符串, value为:后的字符串, 键值对用,分隔;
         * 2.编写一个方法将上面生成的map还原成原始字符串,对key进行倒序
         * 要求使用stream进行处理
         *
         */

        String data = "3:c,1:a,4:d,2:b";
        Map map = Stream.of(data.split(",")).map(s -> s.split(":")).collect(Collectors.toMap(key -> key[0], value -> value[1]));
        System.out.println(map);
        String s1 = map.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.reverseOrder())).map(entry -> String.join(":", entry.getKey(), entry.getValue())).collect(Collectors.joining(","));
        System.out.println(s1);
    }
}

执行结果为

{1=a, 2=b, 3=c, 4=d}
4:d,3:c,2:b,1:a

你可能感兴趣的:(java,java,开发语言)