У меня есть уже заполненный массив basePlan (т.е. есть значения помимо null). Я делаю массив-буфер bufferBasePlan в методе improvingPlan, чтобы не вносить изменений в basePlan, но почему-то после выполнения цикла while, basePlan заполняется null. Не могу понять в чём причина.
private void improvingPlan() {
boolean finish = false;
boolean searchInWarehouses = false;
ArrayList<Integer> recW = new ArrayList<>();
ArrayList<Integer> recS = new ArrayList<>();
String[][] bufferBasePlan = basePlan.clone();
recW.add(warehousesCoordinates);
recS.add(storesCoordinates);
while (!finish) {
if (searchInWarehouses) {
for (int i = 0; i < warehouses.length; i++) {
if (bufferBasePlan[i][recS.get(recS.size() - 1)] != null) {
for (int j = 0; j < stores.length; j++) {
if (i == warehousesCoordinates & j == storesCoordinates) {
recW.add(i);
recS.add(recS.get(recS.size() - 1));
finish = true;
break;
}
else if (bufferBasePlan[i][j] != null & j != recS.get(recS.size() - 1)) {
recW.add(i);
recS.add(recS.get(recS.size() - 1));
finish = false;
searchInWarehouses = false;
bufferBasePlan[i][recS.get(recS.size() - 1)] = null;
break;
}
}
if (finish)
break;
}
}
}
else {
for (int j = 0; j < stores.length; j++) {
if (bufferBasePlan[recW.get(recW.size() - 1)][j] != null) {
for (int i = 0; i < warehouses.length; i++) {
if (i == warehousesCoordinates & j == storesCoordinates) {
recW.add(recW.get(recW.size() - 1));
recS.add(j);
finish = true;
break;
}
else if (bufferBasePlan[i][j] != null & i != recW.get(recW.size() - 1)) {
recW.add(recW.get(recW.size() - 1));
recS.add(j);
finish = false;
searchInWarehouses = true;
bufferBasePlan[recW.get(recW.size() - 1)][j] = null;
break;
}
}
if (finish)
break;
}
}
}
}
for (int i = 0; i < warehouses.length; i++) {
for (int j = 0; j < stores.length; j++) {
System.out.print(i + "," + j + ": " + baseLine[i][j] + " ");
}
System.out.println();
}
System.out.println();
}
Как и сказал tym32167, создаётся копия только верхнего уровня.
private String[][] copyArray() {
String[][] bufferBasePlan = new String[basePlan.length][basePlan[0].length];
for ( int i = 0 ; i < basePlan.length; ++i)
{
System.arraycopy(basePlan[i], 0, bufferBasePlan[i], 0, basePlan[i].length);
}
return bufferBasePlan;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Почему-то SwitchButton-ы в item-ах в recyclerView работают некорректноПри переключении - иногда переключается не только тот, который переключаю, но и еще...
Есть BottomNavigationView и 3 Fragment'аФрагмент "Home" содержит ScrollView
Есть некоторая коллекция(исходник: Проблема с удалением переменных классов потомков):