CodeGym /Blog Java /Random-FR /Méthode Arrays.asList() en Java
Auteur
Volodymyr Portianko
Java Engineer at Playtika

Méthode Arrays.asList() en Java

Publié dans le groupe Random-FR
Beaucoup de débutants confondent le concept de la méthode Arrays.asList() avec la structure de données ArrayList. Même s'ils peuvent sembler et sembler similaires, ces deux sont totalement différents en ce qui concerne la mise en œuvre. Dans cet article, nous couvrirons l'utilisation de base de la méthode Arrays.asList() et éliminerons certaines confusions qui y sont liées.

Pourquoi Arrays.asList() est-il utilisé ?

Si vous avez un tableau que vous devez transformer en liste, java.util.Arrays fournit un wrapper Arrays.asList() à cette fin. En termes simples, cette méthode prend un tableau en paramètre et renvoie une liste. Les principales parties de l'API de la plate-forme Java ont été développées avant l'introduction de l'infrastructure des collections. Ainsi, occasionnellement, vous devrez peut-être effectuer une traduction entre les tableaux traditionnels et les collections plus modernes. Cette fonction sert de lien entre les collections et les API basées sur les tableaux.Méthode Arrays.asList() en Java - 1

Exemple

Jetez un œil à l'exemple suivant :

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class ArraysAsListDemo {
    public static void main(String[] args) {

	String[] teamMembers = {"Amanda", "Loren", "Keith"};
      // using aslist() method
	List teamList = Arrays.asList(teamMembers);
	System.out.println("List : " + teamList);
		
	HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
	System.out.println("HashSet : " + teamHashSet);
    }
}
Sortir:
List : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet ne maintient pas l'ordre

En quoi Arrays.asList() et ArrayList sont-ils différents ?

Lorsque vous appelez la méthode Arrays.asList() sur un tableau, l'objet renvoyé n'est pas un ArrayList (une implémentation de tableau redimensionnable de l'interface List ). C'est un objet de vue avec les méthodes get() et set() qui accèdent au tableau sous-jacent. Toutes les méthodes qui modifieraient la taille du tableau, telles que add() ou remove() de l'itérateur associé, lèvent une UnsupportedOperationException . La raison pour laquelle le programme Java se compile avec succès mais donne une exception d'exécution est que, apparemment, une "Liste" est renvoyée à la suite deTableaux.asList() . Où toutes les opérations d'ajout/suppression sont autorisées. Mais puisque la structure de données sous-jacente est un "tableau" non redimensionnable , une exception est donc levée au moment de l'exécution. Voici un extrait montrant à quoi cela ressemble :

import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
   public static void main(String[] args) {
	Integer[] diceRoll = new Integer[6];	
      //using aslist() method
	List diceRollList = Arrays.asList(diceRoll);
	System.out.println(diceRollList);
	
	// using getters and setters to randomly access the list	
	diceRollList.set(5, 6);	
	diceRollList.set(0, 1);	
	System.out.println(diceRollList.get(5));
	System.out.println(diceRollList.get(1));

	System.out.println(diceRollList);
	
	diceRollList.add(7); // Add a new Integer to the list
    }
}
Sortir:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] Exception dans le thread "main" java.lang.UnsupportedOperationException à java.util.AbstractList.add(AbstractList. java:148) à java.util.AbstractList.add(AbstractList.java:108) à ArraysAsListDemo.main(ArraysAsListDemo.java:20)

Exemples d'utilisation de la méthode asList()

Depuis Java SE 5.0, la méthode asList() est déclarée avoir un nombre variable d'arguments. Au lieu de passer un tableau, vous pouvez également passer des éléments individuels. Par exemple:

import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
    public static void main(String[] args) {
	List seasons = Arrays.asList("winter", "summer", "spring", "fall");
	List odds = Arrays.asList(1, 3, 5, 7, 9);

	System.out.println(seasons);
	System.out.println(odds);
    }
}
Sortir:
[hiver, été, printemps, automne] [1, 3, 5, 7, 9]

Conclusion

Pour utiliser Arrays.asList(), vous devez garder à l'esprit qu'il ne s'agit que d'une méthode wrapper pour votre propre utilitaire. Ne le confondez pas avec ArrayList et gardez à l'esprit qu'il renvoie une "liste". Au départ, vous pourriez obtenir des erreurs lors de l'exécution de fonctions d'ajout/suppression, mais tout disparaît avec une pratique et une compréhension cohérentes. Alors lancez votre IDE et vivez une excellente expérience d'apprentissage !
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION