Maison >Java >javaDidacticiel >copier() en Java

copier() en Java

WBOY
WBOYoriginal
2024-08-30 15:38:30969parcourir

En Java, lors de l'utilisation de collections, nous rencontrons différents scénarios pour copier les éléments d'une liste dans une autre avec la précaution que l'index des éléments ne soit pas affecté lors de la copie. Pour ce type de scénarios, le package java.util.Collections nous fournit une fonction copy() qui copie les éléments présents dans une liste dans l'autre liste, de sorte que les éléments aient également le même index dans la nouvelle liste. Lors de l'utilisation de cette fonction, la taille de la liste de destination doit être supérieure à la taille de la liste source. Cette complexité temporelle de cette fonction est linéaire.

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Syntaxe avec paramètres

Voici une syntaxe de copy() en java avec des paramètres :

Syntaxe :

public static void copy(List dest, List src)
  • Ici, le mot-clé public précise que cette fonction peut être facilement appelée dans n'importe quelle autre classe.
  • Le mot-clé statique fait référence au fait que cette fonction fonctionne au niveau de la classe et qu'elle doit donc être appelée par d'autres fonctions statiques uniquement et peut être appelée en utilisant un nom de classe n'utilisant pas l'objet de la classe.
  • Le mot-clé Void est utilisé pour indiquer que cette fonction ne renvoie rien.

Arguments :

  • dest : C'est une variable de type Liste qui contient la référence de la liste de destination où les données doivent être copiées.
  • src : C'est une variable de type Liste qui contient la référence de la liste source qui doit être copiée.

La fonction ci-dessus génère une exception ci-dessous :

  • IndexOutOfBoundsException : Cette exception se produit lorsque la taille de la liste de destination est inférieure à la taille de la liste source.
  • UnsupportedOperationException : Cette exception se produit lorsque l'itérateur de liste de la liste de destination ne prend pas en charge l'opération définie.

Comment fonctionne la méthode copy() en Java ?

  • La méthode Copy() prend 2 listes. Liste source dont les éléments doivent être copiés et liste de destination où les éléments de la liste doivent être copiés.
  • Tout d’abord, il est vérifié si la taille de la liste de destination est supérieure à celle de la liste source ; sinon, l'exception IndexOutOfBoundsException est levée.
  • Cela indique que JVM est incapable de trouver l'index de l'élément à copier car lors de la copie de l'élément de la liste source vers la liste de destination, l'index de l'élément est également pris en charge. Si un élément est présent dans la liste de destination au même index, l'élément particulier est écrasé par l'élément de copie.
  • Les autres éléments de la liste source sont copiés un par un avec la valeur de leurs index et sont copiés dans la liste de destination aux mêmes index. Les éléments présents aux autres index de la liste de destination restent inchangés.
  • Toute cette opération est effectuée en utilisant une seule itération d'éléments, ce qui donne une complexité temporelle linéaire, ce qui signifie que la complexité est O(n).

Exemples de copy() en Java

Vous trouverez ci-dessous les exemples mentionnés ci-dessous :

Exemple n°1

Pour illustrer l'occurrence de IndexOutOfBoundsException lorsque la taille de la liste de destination est inférieure à celle de la liste source.

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

Sortie :

Puisque la taille de la liste de destination est de 0 et la taille de la liste source est de 6, il n'y a pas de place dans la liste de destination à cet index particulier ; ainsi, cette exception ci-dessous est générée en sortie.

copier() en Java

Eexplication :

  • Dans le cas du programme ci-dessus, 2 listes sont prises et envoyées à la méthode copy() comme arguments, mais comme la taille de la liste de destination est plus petite que la taille de la liste source, une exception IndexOutOfBoundsException se produit.
  • Un tel problème est résolu dans l'exemple ci-dessous, où la taille de la liste de destination est la même que celle de la liste source.

Exemple n°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);       }
}

Sortie :

copier() en Java

Explication :

  • La liste source a 3 éléments à 0,1 et 2 d'index identiques à la liste de destination dans l'exemple ci-dessus.
  • Lorsque ces 2 listes sont passées dans la fonction de copie, puisque la taille des 2 listes est la même, les éléments de la liste de destination sont écrasés par les éléments de la liste source aux mêmes index.

Exemple #3

Dans cet exemple, nous verrons comment les éléments de la liste de destination sont écrasés lorsque des éléments de la liste source y sont copiés.

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

Sortie :

copier() en Java

Explication :

  • Ici, nous avons vu les éléments des 3 premiers index de la liste de destination être écrasés lorsque des éléments y sont copiés, et les éléments des autres index ne restent pas affectés.

Conclusion

Le package collections nous fournit une méthode statique publique qui peut être utilisée pour copier les éléments d'une liste source dans la liste de destination aux mêmes index. Cette méthode ne fonctionne que dans la liste de destination, qui est supérieure à la liste source, et cette opération a une complexité temporelle linéaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:repeindre en JavaArticle suivant:repeindre en Java