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

有没有高效方法将字符串列表转换为整数嵌套列表?

将字符串列表转换为整数嵌套列表的巧妙实现

嘿,你的思路方向是对的,但目前的代码只处理了列表里的第一个元素,没法得到你想要的嵌套整数列表。这里有几种更简洁且符合需求的实现方式:

基础嵌套Stream实现

这是最直接的优化方式,通过两层Stream遍历处理,一次性生成嵌套列表:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> coords = Arrays.asList("0,0,0,0", "1,1,1,1");
        List<List<Integer>> nestedIntList = coords.stream()
            // 遍历每个字符串,将其转换为Integer子列表
            .map(coordStr -> Arrays.stream(coordStr.split(","))
                .map(Integer::parseInt) // 用方法引用替代Lambda,代码更简洁
                .collect(Collectors.toList()))
            .collect(Collectors.toList());
        
        // 输出结果:[[0, 0, 0, 0], [1, 1, 1, 1]]
        System.out.println(nestedIntList);
    }
}

Java 16+简化版

如果你的项目使用Java 16或更高版本,可以用新增的Stream.toList()方法替代Collectors.toList(),进一步简化代码:

List<String> coords = Arrays.asList("0,0,0,0", "1,1,1,1");
List<List<Integer>> nestedIntList = coords.stream()
    .map(s -> Arrays.stream(s.split(","))
        .map(Integer::parseInt)
        .toList())
    .toList();

额外提示(可选)

如果你的输入字符串可能包含非数字内容(比如空串、字母等),可以添加异常处理或过滤逻辑,避免NumberFormatException:

List<List<Integer>> nestedIntList = coords.stream()
    .map(s -> Arrays.stream(s.split(","))
        .filter(str -> str.matches("\\d+")) // 先过滤出纯数字字符串
        .map(str -> {
            try {
                return Integer.parseInt(str);
            } catch (NumberFormatException e) {
                return 0; // 或设置其他符合业务需求的默认值
            }
        })
        .toList())
    .toList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:47:27