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

2 篇文章 0 订阅

题目如下

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

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值