首頁 > 軟體

java如何把逗號分隔的String字串轉int集合

2022-06-30 14:03:26

把逗號分隔的String字串轉int集合

程式碼通過Java 8 Stream實現起來非常容易!

String ids = "1,2,3,4,5";
List<Integer> idList = Arrays.stream(ids.split(",")).map(Integer::parseInt).collect(Collectors.toList());

集合或陣列轉變為逗號分隔的字串的幾種方式

首先,建立一個集合

List<String> list = Lists.newArrayList(null, "bob", "jack");

1、自己編碼實現

    public static <T> String join(List<T> list, String splitStr) {
        if (CollectionUtils.isEmpty(list))
            return "";
        if (list.size() == 1)
            return String.valueOf(list.get(0));
        StringBuilder sb = new StringBuilder();
        boolean isFirst = true;
        for (int i = 0; i < list.size(); i++) {
            if (!isFirst) sb.append(splitStr);
            sb.append(String.valueOf(list.get(i)));
            isFirst = false;
        }
        return sb.toString();
    }

    public static <T> String join(T[] array, String splitStr) {
        if (ArrayUtils.isEmpty(array))
            return "";
        if (array.length == 1)
            return String.valueOf(array[0]);
        StringBuilder sb = new StringBuilder();
        boolean isFirst = true;
        for (int i = 0; i < array.length; i++) {
            if (!isFirst) sb.append(splitStr);
            sb.append(String.valueOf(array[i]));
            isFirst = false;
        }
        return sb.toString();
    }

輸出

null,bob,jack

2、org.apache.commons.lang3.StringUtils

System.out.println(StringUtils.join(list.toArray(), ","));

輸出

,bob,jack

3、StringJoiner, JDK1.8+

    StringJoiner sj = new StringJoiner(",");
    list.forEach(e -> sj.add(String.valueOf(e)));
    System.out.println(sj.toString());
    
    // 在連線之前操作字串, 拼接字首和字尾
    StringJoiner sj2 = new StringJoiner(",", "START_", "_END");
    list.forEach(e -> sj2.add(String.valueOf(e)));
    System.out.println(sj2.toString());

輸出

null,bob,jack
START_null,bob,jack_END

4、String.join(), JDK1.8+

System.out.println(String.join(",", list));

輸出

null,bob,jack

5、Stream, Collectors.joining(), JDK1.8+

    System.out.println(list.stream().collect(Collectors.joining(",")));
    
    // 在連線之前操作字串, 拼接字首和字尾
    String str = list.stream().map(e -> {
       if (e != null) return e.toUpperCase();
       else return "null";
    }).collect(Collectors.joining(",", "START_", "_END"));
    System.out.println(str);

輸出

null,bob,jack
START_null,BOB,JACK_END

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com