我意识到您不能简单地删除数组中的重复项,因为您的 matrixB 将是:
[[C, c, a, b],
[1, 3, 2]] //final '1' removed as it is a "duplicate" of the first
所以我建议改用这种方法:
Object[][] matrixA = {
{'C','c','c','c','a','a','b'},
{1,3,3,3,2,2,1}};
ArrayList<Object> rowHolder = new ArrayList<>();
for(int i = 0; i < matrixA.length; i++){ //for each row
int j;
for(j = 0; j < matrixA[i].length-1; j++){ //for each element
if(matrixA[i][j] != matrixA[i][j+1]) //keep element if next element is different
rowHolder.add(matrixA[i][j]);
}
rowHolder.add(matrixA[i][j]); //add last element always (next element doesn't exist)
matrixA[i] = rowHolder.toArray(); //convert rowHolder to row
rowHolder.clear(); //reset for next row
System.out.println(Arrays.toString(matrixA[i]));
}
这给出了预期:
[C, c, a, b]
[1, 3, 2, 1]
这里唯一的丑陋之处是必须对矩阵和ArrayList 类型都使用Object。这是由于具有混合类型的二维数组,以及 Java 中基元和对象之间转换的限制。如果您使用自定义转换器而不是 ArrayList#toArray,则 matrixA 可以是 int[] 类型,而 rowHolder 具有通用参数 Integer。