假设我有一个包含以下行的二维字符串数组:
table[0][0] = "Tom";
table[0][1] = "Baker";
table[0][2] = "TimeLord";
我有一个挑战是从数组中删除特定行,用户在该行中输入任何元素。实际的两个暗淡。我从一个结果集中读取数组。我必须在不使用ArrayLists且不使用任何外部库/ api的情况下执行上述操作。
我该怎么做? (效率在这里无所谓)
答案 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);