РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
269 of 1163 menu

Метод clone

Метод clone создает и возвращает новую коллекцию, которая является поверхностной копией исходного списка ArrayList. Копия содержит те же элементы в том же порядке, что и оригинал, но является независимым объектом. Метод не принимает параметров и возвращает результат типа Object, поэтому при необходимости его нужно явно приводить к типу ArrayList.

Важно понимать, что копирование является поверхностным: создается новый список, но сами элементы не копируются. Если элементы являются изменяемыми объектами, то изменения внутри этих объектов будут видны как в оригинале, так и в копии.

Синтаксис

ArrayList<Integer> copy = (ArrayList<Integer>) list.clone();

Пример

Давайте создадим список и получим его поверхностную копию:

import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); ArrayList<Integer> res = (ArrayList<Integer>) list.clone(); System.out.println(res); } }

Результат выполнения кода:

[1, 2, 3]

Пример

Давайте убедимся, что копия является независимым списком, и изменение оригинала не затрагивает копию:

import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); ArrayList<String> res = (ArrayList<String>) list.clone(); list.add("d"); list.remove("a"); System.out.println("original: " + list); System.out.println("copy: " + res); } }

Результат выполнения кода:

original: [b, c, d] copy: [a, b, c]

Пример

Давайте покажем, что копирование является поверхностным: если элементы списка - изменяемые объекты, изменения внутри них будут видны в обоих списках:

import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<StringBuilder> list = new ArrayList<>(); list.add(new StringBuilder("a")); list.add(new StringBuilder("b")); ArrayList<StringBuilder> res = (ArrayList<StringBuilder>) list.clone(); list.get(0).append("!"); System.out.println(list); System.out.println(res); } }

Результат выполнения кода:

[a!, b] [a!, b]

Смотрите также

  • класс ArrayList,
    который представляет динамический массив
  • метод addAll,
    который добавляет все элементы другой коллекции
  • метод toArray,
    который преобразует список в массив
  • метод subList,
    который возвращает часть списка
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить