从现有的二维字符串数组创建,没有特定的“行”

时间:2015-03-03 08:57:19

标签: java multidimensional-array

假设我有一个包含以下行的二维字符串数组:

table[0][0] = "Tom";
table[0][1] = "Baker";
table[0][2] = "TimeLord";

我有一个挑战是从数组中删除特定行,用户在该行中输入任何元素。实际的两个暗淡。我从一个结果集中读取数组。我必须在不使用ArrayLists且不使用任何外部库/ api的情况下执行上述操作。

我该怎么做? (效率在这里无所谓)

1 个答案:

答案 0 :(得分:1)

如果你接受二维数组的Java解释会更容易。

来自Java Documentation

  

在Java编程语言中,多维数组是一个数组   其组件本身就是数组。

所以你要移除一个特定的“行”,你只是在该位置移除一个数组。 然后相应地修改数组。

然后使用System.arraycopy然后执行复制操作并删除所需的行。即:

        int[][] tester={{1,2},{3,4},{5,6},{7,8}};
        int row=2;
        System.out.println(tester.length);
        System.arraycopy(tester, row+1, tester, row, tester.length-row-1);

希望这是你想要的。

编辑:最后2个“行”将是彼此的副本。您仍然必须删除最后一个。

    int[][] tester={{1,2},{3,4},{5,6},{7,8}};
    int row=2;
    int[][] testerCopy=new int[tester.length-1][tester[0].length];
    System.out.println(tester.length);
    System.arraycopy(tester, row+1, tester, row, tester.length-row-1);
    System.arraycopy(tester, 0, testerCopy, 0, testerCopy.length);
    System.out.println(Arrays.toString(testerCopy[0]));
    System.out.println(Arrays.toString(testerCopy[1]));
    System.out.println(Arrays.toString(testerCopy[2]));
    System.out.println(testerCopy.length);