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

Java 1.8环境下:二维数组字符串转二维int数组的流与非流实现

Java 1.8 下二维数组字符串转int数组的优化实现方案

非Stream流的优化实现

针对原代码硬编码数组长度、字符串处理冗余的问题,优化后的实现如下:

private static int[][] convertMatrixWithoutStream() {
    String mat = "[0, 10, 0, 5, 4],\n" +
            "[1, 3, 10, 2, 8],\n" +
            "[1, 8, 1, 6, 3],\n" +
            "[4, 10, 2, 3, 5],\n" +
            "[9, 0, 9, 1, 0]";

    // 移除所有空白字符(换行、空格),清理末尾多余逗号
    String cleaned = mat.replaceAll("\\s+", "").replaceAll(",$", "");
    // 截取掉最外层的方括号,按"],["分割得到每行数字字符串
    String[] rowStrs = cleaned.substring(1, cleaned.length() - 1).split("],\\[");
    
    int[][] matrix = new int[rowStrs.length][];
    for (int i = 0; i < rowStrs.length; i++) {
        String[] numStrs = rowStrs[i].split(",");
        int[] row = new int[numStrs.length];
        for (int j = 0; j < numStrs.length; j++) {
            row[j] = Integer.parseInt(numStrs[j]);
        }
        matrix[i] = row;
    }
    return matrix;
}

优化点:

  • 动态计算数组长度,避免硬编码数值,适配不同规模的输入
  • 简化字符串处理逻辑:通过一次截取去掉外层方括号,减少多次替换操作
  • 无需处理分割后的空元素,避免原代码中matarr.length-1的冗余判断

基于Stream流的实现(Java 1.8)

利用Java 1.8 Stream API,实现更简洁的链式转换:

private static int[][] convertMatrixWithStream() {
    String mat = "[0, 10, 0, 5, 4],\n" +
            "[1, 3, 10, 2, 8],\n" +
            "[1, 8, 1, 6, 3],\n" +
            "[4, 10, 2, 3, 5],\n" +
            "[9, 0, 9, 1, 0]";

    String cleaned = mat.replaceAll("\\s+", "").replaceAll(",$", "");
    return Arrays.stream(cleaned.substring(1, cleaned.length() - 1).split("],\\["))
            .map(rowStr -> Arrays.stream(rowStr.split(","))
                    .mapToInt(Integer::parseInt)
                    .toArray())
            .toArray(int[][]::new);
}

实现逻辑:

  1. 清理输入字符串,移除空白字符并修正格式
  2. 将字符串分割为行级数字字符串流
  3. 每行进一步分割为单个数字字符串,映射为int流并转换为int数组
  4. 最后收集所有行数组为二维int数组

注:若输入存在格式异常,可添加try-catch块处理转换失败的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:40:33