И val
, и val2
указывают на один и тот же объект в памяти даже после того, как вы клонировали первый список во второй.
Вы можете доказать это с помощью:
System.out.println(val == val2);
выводит "true"
При этом обратите внимание, что когда вы передаете коллекцию в конструктор копирования ArrayList
, все, что он делает, - это просто создает список, содержащий элементы указанной коллекции, поэтому я не уверен, почемуВы ожидали, что это выполнит некоторый тип "глубокого копирования"