clone()
متد «clone()» در «ArrayList» یک «کپی کم عمق (Shallow Copy)» می سازد. یعنی لیست جدید ساخته می شود، اما آیتم ها همان اشاره گرها هستند. «اشاره گر (Reference)» یعنی آدرس شیء، نه خود شیء.
تعریف و کاربرد clone()
متد «clone()» یک «Object» برمی گرداند. بنابراین باید «تایپ کست (Type Cast)» انجام دهی تا دوباره «ArrayList» شود. کپی کم عمق یعنی خود اشیاء تکثیر نمی شوند.
نکته: اگر آیتم ها قابل تغییر باشند، تغییرشان در هر دو لیست دیده می شود.
سینتکس
public Object clone()
مثال اجراشدنی
این کد یک لیست کپی می کند و تغییرات را نشان می دهد.
import java.util.ArrayList;
public class Main {
  public static void main(String[] args) {
    ArrayList<String> cars = new ArrayList<String>();
    cars.add("Volvo");
    cars.add("BMW");
    cars.add("Ford");
    cars.add("Mazda");
    ArrayList cars2 = (ArrayList) cars.clone();
    cars2.set(0, "Toyota");
    System.out.println(cars);
    System.out.println(cars2);
  }
}
چرا «کپی کم عمق ArrayList» مهم است؟
در پروژه های مدرسه یا بازی، گاهی فقط خود لیست مهم است. اشیاء همان قبلی می مانند. این کار سریع است و حافظه کمتری می خواهد.
نکات فنی و رایج
- خروجی «Object» است؛ حتماً «تایپ کست» کن.
- این کار «کپی کم عمق ArrayList» می سازد، نه کپی عمیق.
- برای کپی عمیق، باید هر آیتم را جداگانه تکثیر کنی.
هشدار: اگر آیتم ها را تغییر دهی، هر دو لیست تأثیر می گیرند؛ چون به همان اشیاء اشاره می کنند.
مطالعه بیشتر
برای شناخت کلی «ArrayList» سر بزن به آرایه لیست در جاوا. برای پایه ها هم بخش آرایه ها را ببین. همچنین مرور آموزشی و مرجع در منابع زیر:
جمع بندی سریع
- clone() یک «Object» برمی گرداند.
- خروجی را به «ArrayList» تبدیل کن.
- این فقط «کپی کم عمق ArrayList» است.
- آیتم ها مشترک باقی می مانند.
- برای کپی عمیق، دستی عمل کن.
