You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否有经测试的库方法可将指定字符串转为整数数组或List<Integer>?

有哪些成熟的库方法可以实现字符串转整数列表/数组?

当然有啦!Java生态里有不少经过广泛测试的库能帮你轻松搞定这个需求,不用自己从头写解析逻辑,代码还更简洁易读。下面给你推荐几个常用的方案:

Apache Commons Lang(最常用的工具库之一)

这个库的StringUtils和ArrayUtils组合起来能完美处理你的场景,而且对各种边缘情况(比如多余空格、空元素)的处理很贴心:

处理逗号分隔的字符串(如"1, 2, 3, 4")

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.ArrayUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Example {
    public static void main(String[] args) {
        String commaSeparated = "1, 2, 3, 4";
        // 转成List<Integer>
        List<Integer> integerList = Arrays.stream(StringUtils.split(commaSeparated, ","))
                .map(String::trim)
                .map(Integer::parseInt)
                .collect(Collectors.toList());
        
        // 转成Integer数组
        Integer[] integerArray = ArrayUtils.toObject(Arrays.stream(StringUtils.split(commaSeparated, ","))
                .map(String::trim)
                .mapToInt(Integer::parseInt)
                .toArray());
    }
}

处理空格分隔的字符串(如"1 2 3 4")

这里StringUtils.split()默认会按任意空白字符分割(包括多个连续空格、制表符等),还会自动忽略开头结尾的空白:

String spaceSeparated = "1 2  3   4"; // 多个空格也没问题
List<Integer> spaceList = Arrays.stream(StringUtils.split(spaceSeparated))
        .map(Integer::parseInt)
        .collect(Collectors.toList());

Google Guava(功能更强大的工具库)

Guava的Splitter类是处理字符串分割的神器,语法更直观,还支持链式调用处理各种细节:

处理逗号分隔的字符串

import com.google.common.base.Splitter;
import java.util.List;
import java.util.stream.Collectors;

public class GuavaExample {
    public static void main(String[] args) {
        String commaStr = "1, 2, 3, 4";
        List<Integer> commaList = Splitter.on(',')
                .trimResults() // 自动去掉每个元素的前后空格
                .omitEmptyStrings() // 忽略分割后产生的空字符串(比如开头/结尾有逗号的情况)
                .splitToList(commaStr)
                .stream()
                .map(Integer::parseInt)
                .collect(Collectors.toList());
    }
}

处理空格分隔的字符串

String spaceStr = "1 2  3   4";
List<Integer> spaceList = Splitter.on(CharMatcher.whitespace())
        .trimResults()
        .omitEmptyStrings()
        .splitToList(spaceStr)
        .stream()
        .map(Integer::parseInt)
        .collect(Collectors.toList());

不用第三方库?JDK原生方案也能行

如果不想引入额外依赖,用JDK 8+的Stream结合正则分割也能实现,就是需要自己写正则规则:

// 处理逗号分隔
String commaStr = "1, 2, 3, 4";
List<Integer> nativeCommaList = Arrays.stream(commaStr.split("\\s*,\\s*")) // 匹配逗号前后的任意空格
        .map(Integer::parseInt)
        .collect(Collectors.toList());

// 处理空格分隔
String spaceStr = "1 2  3   4";
List<Integer> nativeSpaceList = Arrays.stream(spaceStr.split("\\s+")) // 匹配一个或多个空白符
        .map(Integer::parseInt)
        .collect(Collectors.toList());

总结

如果你追求代码的简洁性和容错性,优先选Apache Commons Lang或Guava——这两个都是业界广泛使用、经过充分测试的库,能帮你避免很多手写解析容易踩的坑。如果不想加依赖,原生的Stream+正则方案也能满足基础需求。

内容的提问来源于stack exchange,提问作者triplodrindl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:28:55