题目如下
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<String, String> 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