Я работаю над настольной игрой и в настоящее время пытаюсь сохранить всех окружающих соседей в двумерном массиве в виде списков в списке. Проблема, с которой я столкнулся, заключается в том, что когда я сохранил list1 в list2, а затем перешел в итерации и изменил list1 на что-то другое, это также влияет на list2, поэтому я теряю значения другого соседа.
Вот что я пробовал:
private ArrayList<ArrayList> forcedPlays = new ArrayList<ArrayList>();
private ArrayList<Integer> forcedPlay = new ArrayList<Integer>();
private void findNeighbors(){
for (int y = -1; y <=1 ; y+=2) {
for (int x = -1; x <= 1; x+=2) {
if (board[myY+y][myX+x]!=null){
enemyY = myY+y;
enemyX = myX+x;
forcedPlay.addAll(Arrays.asList(
Integer.valueOf(enemyY),
Integer.valueOf(enemyX)));
forcedPlays.add(forcedPlay);
forcedPlay.clear()}}}}
Если мой игрок окружен двумя соседями, я ожидаю, что выходные данные принудительного воспроизведения будут выглядеть, например: [[2,1], [4,3]], но вместо этого они выглядят как [[], [] ]. Итак, что я не понимаю, так это как добавить list1 в list2, а затем разорвать связь между ними, чтобы при очистке list1 не удалялся list2?