Rumah  >  Artikel  >  Java  >  copy() dalam Java

copy() dalam Java

WBOY
WBOYasal
2024-08-30 15:38:30941semak imbas

Di Java, semasa menggunakan koleksi, kami menjumpai pelbagai senario untuk menyalin satu elemen senarai ke yang lain dengan langkah berjaga-jaga supaya indeks elemen tidak boleh terjejas semasa menyalin. Untuk jenis senario sedemikian, pakej java.util.Collections memberikan kami fungsi copy() yang menyalin elemen yang hadir dalam satu senarai ke dalam senarai yang lain, supaya elemen mempunyai indeks yang sama dalam senarai baharu juga. Semasa menggunakan fungsi ini, saiz senarai destinasi mestilah lebih besar daripada saiz senarai sumber. Kerumitan masa fungsi ini adalah linear.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks dengan Parameter

Berikut ialah sintaks copy() dalam java dengan parameter:

Sintaks:

public static void copy(List dest, List src)
  • Di sini, kata kunci awam menyatakan bahawa fungsi ini boleh dipanggil dengan mudah dalam mana-mana kelas lain.
  • Kata kunci statik merujuk bahawa fungsi ini berfungsi pada peringkat kelas dan oleh itu keperluan akan dipanggil oleh fungsi statik lain sahaja serta boleh dipanggil menggunakan nama kelas tanpa menggunakan objek kelas.
  • Kata kunci void digunakan untuk menunjukkan fungsi ini tidak mengembalikan apa-apa.

Hujah:

  • dest: Ia ialah pembolehubah jenis Senarai yang memegang rujukan untuk senarai destinasi di mana data perlu disalin.
  • src: Ia ialah pembolehubah jenis Senarai yang memegang rujukan untuk senarai sumber yang perlu disalin.

Fungsi di atas melontarkan pengecualian di bawah:

  • IndexOutOfBoundsException: Pengecualian ini berlaku apabila saiz senarai destinasi lebih kecil daripada saiz senarai sumber.
  • UnsupportedOperationException: Pengecualian ini berlaku apabila lelang senarai senarai destinasi tidak menyokong operasi yang ditetapkan.

Bagaimana kaedah copy() berfungsi dalam Java?

  • Kaedah Copy() mengambil 2 senarai. Senarai sumber yang elemennya perlu disalin dan senarai destinasi di mana elemen senarai perlu disalin.
  • Pertama, ia disemak jika saiz senarai destinasi lebih besar daripada senarai sumber; jika tidak, pengecualian IndexOutOfBoundsException dilemparkan.
  • Ini menunjukkan bahawa JVM tidak dapat mencari indeks untuk elemen yang perlu disalin kerana semasa menyalin elemen dari senarai sumber ke senarai destinasi, indeks elemen juga dijaga. Jika sekiranya terdapat satu elemen dalam senarai destinasi pada indeks yang sama, elemen tertentu akan ditimpa oleh elemen penyalin.
  • Elemen lain daripada senarai sumber disalin satu demi satu dengan nilai indeksnya dan akan disalin ke senarai destinasi pada indeks yang sama. Unsur yang terdapat pada indeks lain dalam senarai destinasi kekal tidak berubah.
  • Keseluruhan operasi ini dilakukan menggunakan satu lelaran elemen, oleh itu mempunyai kerumitan masa linear yang bermaksud kerumitan ialah O(n).

Contoh copy() dalam Java

Diberikan di bawah adalah contoh yang dinyatakan di bawah:

Contoh #1

Untuk menggambarkan kejadian IndexOutOfBoundsException apabila saiz senarai destinasi kurang daripada senarai sumber.

Kod:

import java.util.*;
public class Demo {
public static void main(String[] args) {
List<String> mysrclist = new ArrayList<String>(6);
List<String> mydestlist = new ArrayList<String>(11);
mysrclist.add("Lets practice");
mysrclist.add("Java");
mysrclist.add("with US");
mysrclist.add("EDUCBA");
mysrclist.add("is a great");
mysrclist.add("Learnig Platform");
Collections.copy(mydestlist, mysrclist);
System.out.println("Elements of source list: "+mysrclist);
System.out.println("Elements of destination list: "+mydestlist);
}
}

Output:

Memandangkan saiz senarai destinasi ialah 0 dan saiz senarai sumber ialah 6, tiada tempat dalam senarai destinasi pada indeks tertentu itu; oleh itu, pengecualian di bawah ini dibuang sebagai output.

copy() dalam Java

Explanation:

  • Dalam kes program di atas, 2 senarai diambil dan dihantar ke kaedah copy() sebagai argumen, tetapi memandangkan saiz senarai destinasi adalah lebih kecil daripada saiz senarai sumber, oleh itu, IndexOutOfBoundsException berlaku.
  • Isu seperti itu diselesaikan dalam contoh di bawah, dengan saiz senarai destinasi adalah sama dengan senarai sumber.

Contoh #2

Kod:

import java.util.*;
public class Demo {
public static void main(String[] args) {
List<String> mysrclist = new ArrayList<String>(6);
List<String> mydestlist = new ArrayList<String>(11);
mysrclist.add("Lets practice");
mysrclist.add("Java");
mysrclist.add("with US");
System.out.println("Elements of source list: "+mysrclist);
mydestlist.add("EDUCBA");
mydestlist.add("is a great");
mydestlist.add("Learnig Platform");
System.out.println("Elements of destination list before copy() executes: "+mydestlist);
Collections.copy(mydestlist, mysrclist);
System.out.println("Elements of destination list after copy() executes: "+mydestlist);       }
}

Output:

copy() dalam Java

Penjelasan:

  • Senarai sumber mempunyai 3 elemen pada indeks 0,1 dan 2 sama seperti senarai destinasi dalam contoh di atas.
  • Apabila 2 senarai ini diluluskan dalam fungsi salin, memandangkan saiz 2 senarai adalah sama, elemen dalam senarai destinasi akan ditimpa oleh elemen senarai sumber pada indeks yang sama.

Contoh #3

Dalam contoh ini, kita akan melihat cara elemen senarai destinasi ditimpa apabila elemen senarai sumber disalin ke dalamnya.

Kod:

import java.util.*;
public class Demo {
public static void main(String[] args) {
//Create lists for source and destination
List<String> mysrclist = new ArrayList<String>(6);
List<String> mydestlist = new ArrayList<String>(11);
//Populate two source and destination lists
mysrclist.add("DIgital Learning");
mysrclist.add("for Java");
mysrclist.add("is great");
System.out.println("Elements of source list: "+mysrclist);
mydestlist.add("Book Learning");
mydestlist.add("is");
mydestlist.add("a great");
mydestlist.add("Learnig Platform");
mydestlist.add("For All");
System.out.println("Elements of destination list before copying : "+mydestlist);
// copy into destination list
Collections.copy(mydestlist, mysrclist);
System.out.println("Elements of destination list after copying : "+mydestlist);
}
}

Output:

copy() dalam Java

Penjelasan:

  • Di sini kami melihat elemen pada 3 indeks pertama dalam senarai destinasi ditimpa apabila elemen disalin ke dalamnya dan elemen pada indeks lain kekal tidak terjejas.

Kesimpulan

Pakej koleksi menyediakan kami kaedah statik awam yang boleh digunakan untuk menyalin satu elemen senarai sumber ke dalam senarai destinasi pada indeks yang sama. Kaedah ini hanya berfungsi dalam senarai destinasi, yang lebih besar daripada senarai sumber, dan operasi ini mempunyai kerumitan masa linear.

Atas ialah kandungan terperinci copy() dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:mengecat semula di JawaArtikel seterusnya:mengecat semula di Jawa