Sobes.tech
Junior — Middle

Obyektning to'liq nusxalanish jarayoni va uning sathiy nusxasi o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Obyektning to‘liq nusxasi (deep copy) va yuzaki nusxa (shallow copy) ichki obyektlarni nusxalash darajasiga qarab farq qiladi:

  • Yuzaki nusxa yangi obyekt yaratadi, lekin boshqa obyektlarga havola qiladigan maydonlar havola sifatida nusxalanadi. Ya’ni, ichki obyektlar nusxalanmaydi, balki asl va nusxa o‘rtasida bo‘lishadi.

  • To‘liq nusxa yangi obyekt yaratadi va barcha ichki obyektlarni rekursiv ravishda nusxalaydi, to‘liq mustaqil nusxa hosil qiladi.

Java misoli:

import java.util.ArrayList;
import java.util.List;

class Person implements Cloneable {
    String name;
    List<String> hobbies;

    public Person(String name, List<String> hobbies) {
        this.name = name;
        this.hobbies = hobbies;
    }

    // Yuzaki nusxa
    public Person shallowCopy() throws CloneNotSupportedException {
        return (Person) this.clone();
    }

    // To‘liq nusxa
    public Person deepCopy() {
        List<String> hobbiesCopy = new ArrayList<>(this.hobbies);
        return new Person(this.name, hobbiesCopy);
    }
}

Ushbu misolda, yuzaki nusxada hobbies ro‘yxati asl va nusxa o‘rtasida bo‘lishadi, chuqur nusxada esa yangi ro‘yxat yaratiladi.