【简化代码】字符串与各种集合类的相互转化

前言:工作中经常有逗号字符串转换成各种集合类的需求,今天我来总结一下一些好的方法实现,以及可能会碰到的问题。OK,我们开始吧!
1.字符串转List(/Set)

用流来进行

	String str = "1,2,3";
	List<String> list = Stream.of(str.split(",")).collect(Collectors.toList()); ;

大家可能常用Arrays工具类的asList(T... a)方法,但是这种方法生成的list不能进行删除和添加操作,会报错。

List<String> list2 = Arrays.asList(str.split(","));
list2.add("1");
//报错信息:
java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)//这里点进去就可以看到调用的AbstractList的add
	at java.util.AbstractList.add(AbstractList.java:108)

为什么会报错,因为该方法生成的List 是ArrayList的内部类,而内部类没有重新AbstractList 的add方法,而AbstractList 的add方法就是直接抛出异常。
在这里插入图片描述
咳咳,这是个知识点记住哦。当然你非要用工具类来创建,你可以重新new一个ArrayList然后构建函数传进去。我更推荐用流的方式来进行创建,简单不易出错。

2.List(/Set)转字符串

没啥好说,直接流转。

list.stream().collect(Collectors.joining(","))
3.List<Map<String,Object>>转字符串
	@Test
    public void  listmapTostring(){
        List<Map<String, Object>> list = new ArrayList<>();
        for (int i=0; i<10; i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("index", i);
            list.add(map);
        }
        String mergedString = list.stream().map(item ->"" +item.get("index")).collect(Collectors.joining(", "));
        System.out.println(mergedString);
    }
    结果:0, 1, 2, 3, 4, 5, 6, 7, 8, 9

同理你也可以转list中的元素实体对象的。只不过map方法改一下。

总结:
注意理解 stream()map()collect()方法

—拓展 stream()map()collect()方法简单综合运用——逗号相间的字符串,在每个字符前再添加某个字符

 @Test
    public void test7(){
        String str = "a,b,c,d";
        System.out.println(Stream.of(str.split(",")).map( item ->{return "t1."+item;}).collect(Collectors.joining(",")));
    }

在这里插入图片描述

多总结,打造自己的知识体系,不用加晚班。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值