1

Я пытаюсь сделать стек из arraylist'ов, но созданный мною хранит только ссылку на объект, который в него добавили, а я хочу, чтобы он хранил сам объект и размер(и содержимое) unitPaths не менялось при изменении path

Dot a = new Dot();

Deque<ArrayList> unitPaths = new ArrayDeque<ArrayList>();

ArrayList<Dot> path = new ArrayList();

unitPaths.push(path);

println(unitPaths.peek().size()); //printing 2
path.add(a); 
path.add(a);
println(unitPaths.peek().size()); //printing 4 
  • связанный: https://ru.stackoverflow.com/q/267073/227016 – diralik Jan 19 '18 at 21:55
  • 1
    @diraria я понял, но ответ на вопрос не Дан. Я пытался писать unitPaths.push(new ArrayList<Dot>(path), но это тоже не помогло , хотя я создаю уже новый, казалось бы, ArrayList. – ramazan793 Jan 20 '18 at 10:18
  • Ответ, не дан, да. Если в ArrayDeque добавлять новый ArrayList, созданный через new ArrayList<>(старый_arraylist), то вроде всё работает. – diralik Jan 20 '18 at 10:45
  • @diraria хм. у меня почему-то не работает. Пишу на Processing 3.3.6, там Java. – ramazan793 Jan 20 '18 at 11:42
  • 1
    @diraria а. я понял, я еще использовал иногда path = unitsPath.peek() и получается, что каждый раз меняя path, я менял unitsPath.peek(). Ок, нужно было path = new ArrayList(unitsPath.peek()). Спасибо. – ramazan793 Jan 20 '18 at 11:53

0 Answers0