Java 二维数组转字符串 字符串转二维数组 二维数组存txt文件 二维数组和字符串的互相转化 二维数组deepToString反向方法 二维数组存入文件并读取文件转二维数组

算法 稀疏数组 数组优化 数组压缩 二维数组转稀疏数组 算法合集(二)_不努力就种地~的博客-CSDN博客

算法解答最后有个问题:

1) 在前面的基础上,将稀疏数组保存到磁盘上,比如 map.data

2) 恢复原来的数组时,读取 map.data 进行恢复

思路:

        a. 二维数组转换为字符串命名为map.txt文件进行存储

        b. 读取文件map.txt的字符串,进行二维数组的转换

1. 下面是二维数组转字符串

int chessArr1[][] = new int[11][11];
chessArr1[1][2] = 1; 
chessArr1[2][3] = 2;
chessArr1[4][5] = 2;
# 使用arrays 方法转字符串
String arrayVar = Arrays.deepToString(chessArr1);

2. jackson 的objectMapper进行字符串转二维数组

pom引用:

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.14.0</version>
    </dependency>

代码:

# 生产时,这个new应该是放在JsonUtils内进行初始化,目的只初始化一次对象,使用JsonUtils.readValue封装的方法,本文只是示例。
ObjectMapper om = new ObjectMapper();

Integer[][] integers = om.readValue(s, Integer[][].class);
# 打印测试代码是否正常
for (int i = 0; i < integers.length; i++) {
    System.out.printf("dddddd %d\t%d\t%d\t\n", integers[i][0], integers[i][1], integers[i][2]);
}

3. 也可以读取字符串,进行字符串的切割,进行转换:

 /**
     * str转换 int [][]
     * 本方法只作为示例,如果需要用此方法,建议try catch下然后抛出一个businessException
     * 可以将方法中"," 用常量替代哦!
     * @param needConvertChar
     * @return
     */
    public static int[][] string2Array(String needConvertChar) {
        if (StringUtils.isBlank(needConvertChar)) {
            return null;
        }

        String needConvertChar0 = needConvertChar.substring(1, needConvertChar.length());
        needConvertChar0 = needConvertChar0.substring(0, needConvertChar0.length() - 1);
        String[] rows = needConvertChar0.split("],");
        String first = rows[0];
        String[] cols = first.substring(1, first.length()).split(",");
        int[][] result = new int[rows.length][cols.length];

        for (int i = 0; i < rows.length; i++) {
            String row = rows[i].trim();
            String[] columns = row.substring(1, row.length()).split(",");
            for (int j = 0; j < columns.length; j++) {
                String column = columns[j];
                if (column.endsWith("]")) {
                    column = column.replace("]", "");
                }
                result[i][j] = Integer.valueOf(column.trim());
            }
        }
        return result;

    }

4. 如果需要存储到文本文件,文中需要用到的fileUtil 建议参考工作项目框架中的fileUtils

猜你喜欢

转载自blog.csdn.net/qq_33919114/article/details/132559273