字符串與各種集合類的相互轉化

前言:工作中經常有逗號字符串轉換成各種集合類的需求,今天我來總結一下一些好的方法實現,以及可能會碰到的問題。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()方法

多總結,打造自己的知識體系,不用加晚班。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章