Кадом усулии беҳтарини нусхабардории массивро?
sobes.tech AI
Ҷавоб аз AI
Барои намудҳои содда ва объектҳо бе нусхаи амиқтарин, роҳҳои зерин самараноктар мебошанд:
-
System.arraycopy(): Методии ватанӣ, ки барои нусхаи зуд оптимизатсия шудааст.// Намунаи истифодаи System.arraycopy int[] sourceArray = {1, 2, 3, 4, 5}; int[] destinationArray = new int[sourceArray.length]; System.arraycopy(sourceArray, 0, destinationArray, 0, sourceArray.length); -
Arrays.copyOf(): Методии қулай аз синфиArrays. Дар дохили онSystem.arraycopy()истифода мешавад.// Намунаи истифодаи Arrays.copyOf int[] sourceArray = {1, 2, 3, 4, 5}; int[] destinationArray = Arrays.copyOf(sourceArray, sourceArray.length);
Барои нусхаи амиқтарини объектҳо ( вақте ки лозим аст, ки на танҳо истинодҳо, балки худи объектҳоро, ки онҳо ишора мекунанд, нусхабардорӣ кунед) метавонанд ба дигар усулҳо ниёз дошта бошанд, масалан:
-
Иҷрои интерфейси
Cloneableва иваз кардани усулиclone(). Тавсия дода намешавад барои таҳияҳои нав, ба сабаби мушкилоти зиёд.// Намунаи иҷрои Cloneable ва clone() class MyObject implements Cloneable { int value; MyObject innerObject; @Override protected Object clone() throws CloneNotSupportedException { MyObject cloned = (MyObject) super.clone(); // нусхаи амиқтарини объекти дохилӣ cloned.innerObject = (MyObject) this.innerObject.clone(); return cloned; } } -
Истифодаи конструктори нусха.
// Намунаи конструктори нусха class MyObject { int value; MyObject innerObject; public MyObject(MyObject other) { this.value = other.value; // нусхаи амиқтарини объекти дохилӣ this.innerObject = new MyObject(other.innerObject); } } -
Истифодаи сериализатсия/десериализатсия (масалан, бо истифода аз
ByteArrayInputStreamваObjectInputStream). Мумкин аст, ки самаранок набошад барои массивҳои калон ё объектҳое, киSerializableнамебошанд. -
Истифодаи китобхонаҳои тарафи сеюм (масалан, Apache Commons Lang бо усули
SerializationUtils.clone()).
Беҳтарин барои нусхаи рӯизаминии (плоский) намудҳои содда ва объектҳои оддӣ, System.arraycopy() ё Arrays.copyOf(). Барои нусхаи амиқтарини, одатан, беҳтар аст, ки конструктори нусха истифода шавад.