next up previous contents index
suivant: Autres structures de données monter: Réalisations des collections et précédent: Collections et tables   Table des matières   Index


Collections et tableaux

Les collections constituent un moyen à la fois beaucoup plus souple et plus puissant que les tableaux pour stocker des données. Il est souvent commode de réaliser des ``conversions'' entre tableaux et collections.

La méthode Object[] toArray() retourne un nouveau tableau d'objets contenant tous les éléments d'une collection :

  Collection c = ...;
  Object[] t = c.toArray();

Si l'on souhaite spécifier le type du tableau ainsi créé, on doit utiliser une autre méthode Object[] toArray(Object[] a). Par exemple, pour créer un tableau de String (et non un tableau d'objets), il suffit de passer comme argument à cette méthode un tableau de String (même de taille nulle), et ensuite de faire un transtypage vers String[] :

  String[] t = (String[]) c.toArray(new String[0]);

Cette forme retorse est due au fait que le type d'une référence à un tableau n'est jamais déterminé par le type de ses éléments : par exemple, le tableau désigné par a dans l'exemple suivant est de type Object[], et non String[], alors que l'instance définie par s est de type String :

  Object[] a = {"p", "q"};
  Object s = "p";

De plus, si le tableau passé en argument à toArray est de taille suffisante, il est utilisé pour copier les éléments de la collection, de sorte qu'aucun autre objet n'est créé en mémoire :

  String[] s = new String[c.size];
  String[] x =  (String[]) c.toArray(s);  // x == s

Inversement, la fonction List asList(Object[] a) de la classe Arrays construit une liste basée sur un tableau d'objets :

  Object[] t = ...;
  List l = Arrays.asList(t);

La documentation précise que la liste l est de taille fixe (ce n'est donc une instance ni de ArrayList, ni de LinkedList) et que le tableau et la suite ont les mêmes éléments (toute modification faite à un élement de l modifie l'élément correspondant de t).


next up previous contents index
suivant: Autres structures de données monter: Réalisations des collections et précédent: Collections et tables   Table des matières   Index
Rene' LALEMENT 2002-11-07