public static String[][][] cleanUp(String[][][] array) {
for (int f = 0; f < array.length; f++) {
for (int g = 0; g < array[f].length; g++) {
int position = 0;
//boolean flag = false;
int count = 0;
for (int h = 0; h < array[f][g].length; h++) {
if (array[f][g][h].equals(array[f][g][h+1])) count++;
else {
ArrayList<String> temp = new ArrayList<String>(Arrays.asList(array[f][g]));
for (int i = count - 1; i > position; i--) {
temp.remove(i);
position = i-1 ;
}
temp.set(position, array[f][g][h] + " (" + count + ")");
}
}
}
}
return array;
}
По существу, я хочу сделать 3D-массив строк и иметь в каждом массиве 1D количество отображаемых значений для повторяющихся значений. Например, если бы я имел массив строк, как это:Объединение идентичных значений в массиве
[go, go, go, go, go, go]
[go, stop, stop, stop]
он стал бы:
[go (5)]
[go (1), stop (3)]
Как я мог это сделать, и что это я делаю неправильно?
Вы можете начать правильно сравнение строк (использование равно, не ==) – Eran
Насколько я могу судить, 2 внешних размеры массива не имеют никакого отношения к дедупликации. Если это так, было бы легче подумать о том, как это сделать для 'String []', а затем просто переносить вызовы этого метода на два для циклов для итерации внешних измерений. –
@ Эйран Упс. Я исправил это, но он все еще не работает. Я получаю «ArrayIndexOutOfBoundsException» в любом случае. –