Heim  >  Artikel  >  Java  >  copy() in Java

copy() in Java

WBOY
WBOYOriginal
2024-08-30 15:38:30965Durchsuche

In Java stoßen wir bei der Verwendung von Sammlungen auf verschiedene Szenarien, in denen die Elemente einer Liste in die andere kopiert werden, wobei darauf zu achten ist, dass der Index der Elemente beim Kopieren nicht beeinträchtigt wird. Für solche Szenarien stellt uns das Paket java.util.Collections eine Funktion copy() zur Verfügung, die in einer Liste vorhandene Elemente in die andere Liste kopiert, sodass Elemente auch in der neuen Liste denselben Index haben. Bei Verwendung dieser Funktion muss die Größe der Zielliste größer sein als die Größe der Quellliste. Diesmal ist die Komplexität dieser Funktion linear.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Syntax mit Parametern

Es folgt eine Syntax von copy() in Java mit Parametern:

Syntax:

public static void copy(List dest, List src)
  • Hier gibt das Schlüsselwort public an, dass diese Funktion problemlos in jeder anderen Klasse aufgerufen werden kann.
  • Statisches Schlüsselwort bezieht sich darauf, dass diese Funktion auf Klassenebene funktioniert und daher nur von anderen statischen Funktionen aufgerufen werden muss und auch unter Verwendung eines Klassennamens aufgerufen werden kann, der nicht das Objekt der Klasse verwendet.
  • Das Schlüsselwort „Void“ wird verwendet, um anzugeben, dass diese Funktion nichts zurückgibt.

Argumente:

  • Ziel: Es handelt sich um eine Variable vom Typ Liste, die die Referenz für die Zielliste enthält, in die Daten kopiert werden müssen.
  • src: Es handelt sich um eine Variable vom Typ Liste, die die Referenz für die Quellliste enthält, die kopiert werden muss.

Die obige Funktion löst die folgende Ausnahme aus:

  • IndexOutOfBoundsException: Diese Ausnahme tritt auf, wenn die Größe der Zielliste kleiner als die Größe der Quellliste ist.
  • UnsupportedOperationException: Diese Ausnahme tritt auf, wenn der Listeniterator der Zielliste den Set-Vorgang nicht unterstützt.

Wie funktioniert die copy()-Methode in Java?

  • Die Copy()-Methode benötigt 2 Listen. Quellliste, deren Elemente kopiert werden müssen, und Zielliste, in die die Elemente der Liste kopiert werden müssen.
  • Zuerst wird geprüft, ob die Größe der Zielliste größer als die der Quellliste ist; Andernfalls wird die IndexOutOfBoundsException-Ausnahme ausgelöst.
  • Dies weist darauf hin, dass JVM den Index für das zu kopierende Element nicht finden kann, da beim Kopieren des Elements von der Quellliste in die Zielliste auch der Index des Elements berücksichtigt wird. Wenn in der Zielliste ein Element am gleichen Index vorhanden ist, wird das jeweilige Element durch das kopierende Element überschrieben.
  • Andere Elemente aus der Quellliste werden einzeln mit dem Wert ihres Index kopiert und an denselben Indizes in die Zielliste kopiert. Die in anderen Indizes in der Zielliste vorhandenen Elemente bleiben unverändert.
  • Dieser gesamte Vorgang wird mit einer einzigen Iteration von Elementen durchgeführt und weist daher eine lineare Zeitkomplexität auf, was bedeutet, dass die Komplexität O(n) ist.

Beispiele für copy() in Java

Im Folgenden finden Sie die unten genannten Beispiele:

Beispiel #1

Um das Auftreten von IndexOutOfBoundsException zu veranschaulichen, wenn die Größe der Zielliste kleiner als die Quellliste ist.

Code:

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);
}
}

Ausgabe:

Da die Größe der Zielliste 0 und die Größe der Quellliste 6 beträgt, gibt es in der Zielliste an diesem bestimmten Index keinen Platz; Daher wird die folgende Ausnahme als Ausgabe ausgelöst.

copy() in Java

EErklärung:

  • Im Fall des obigen Programms werden 2 Listen genommen und als Argumente an die copy()-Methode gesendet, aber da die Größe der Zielliste kleiner als die Größe der Quellliste ist, tritt IndexOutOfBoundsException auf.
  • Ein solches Problem wird im folgenden Beispiel gelöst, in dem die Größe der Zielliste mit der Quellliste übereinstimmt.

Beispiel #2

Code:

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);       }
}

Ausgabe:

copy() in Java

Erklärung:

  • Die Quellliste hat 3 Elemente bei 0,1 und 2 Index, genau wie die Zielliste im obigen Beispiel.
  • Wenn diese beiden Listen in der Kopierfunktion übergeben werden, werden Elemente in der Zielliste durch die Elemente der Quellliste mit denselben Indizes überschrieben, da die Größe der beiden Listen gleich ist.

Beispiel #3

In diesem Beispiel sehen wir, wie die Elemente der Zielliste überschrieben werden, wenn Elemente der Quellliste hinein kopiert werden.

Code:

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);
}
}

Ausgabe:

copy() in Java

Erklärung:

  • Hier haben wir gesehen, dass die Elemente an den ersten drei Indizes in der Zielliste überschrieben werden, wenn Elemente dorthin kopiert werden, und Elemente an anderen Indizes bleiben davon unberührt.

Fazit

Das Collections-Paket stellt uns eine öffentliche statische Methode zur Verfügung, mit der die Elemente einer Quellliste an denselben Indizes in die Zielliste kopiert werden können. Diese Methode funktioniert nur in der Zielliste, die größer als die Quellliste ist, und dieser Vorgang hat eine lineare Zeitkomplexität.

Das obige ist der detaillierte Inhalt voncopy() in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:in Java neu streichenNächster Artikel:in Java neu streichen