JAVA8 把类似a=1;b=2;c=3的String类型数据转成map集合

数据源

String str = "a=1;b=2;c=3";

转换后格式

String转换为Map

{”a":"1", "b":"2", "c":"3"}

实现方法

在JAVA8之前我们可以使用以下的方法来实现

public static Map<String, Object> transStringToMap(String mapString, String separator, String pairSeparator) {
        Map<String, Object> map = new HashMap<String, Object>();
        String[] fSplit = mapString.split(separator);
        for (int i = 0; i < fSplit.length; i++) {
            if (fSplit[i]==null||fSplit[i].length()==0) {
                continue;
            }
            String[] sSplit = fSplit[i].split(pairSeparator);
            String value = fSplit[i].substring(fSplit[i].indexOf('=') + 1, fSplit[i].length());
            map.put(sSplit[0], value);
        }

        return map;
    }
public static void main(String[] args) {
       String str= "a=1;b=2;c=3";
        Map<String, Object> map = StringUtil.transStringToMap(str, ";", "=");
        for (String key : map.keySet()) {
            System.out.println("key:" + key + ", value:" + map.get(key));
        }
    }

使用JAVA8 新特性实现则简单很多:

public static void main(String[] args) {
       String str= "a=1;b=2;c=3";
       String[] strings = str.trim().split(";");
        Map<String, String> stringMap = Arrays.asList(strings).stream()
                .map(s -> s.split("="))
                .collect(Collectors.toMap(strings1 -> strings1[0],strings1 -> strings1[1]));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值