282 votes

Initialisation ArrayList équivalente à l'initialisation du tableau

Je suis conscient que vous pouvez initialiser un tableau pendant l’instanciation comme suit:

 String[] names = new String[] {"Ryan", "Julie", "Bob"};
 

Est-il possible de faire la même chose avec une ArrayList? Ou dois-je ajouter le contenu individuellement avec array.add() ?

362voto

meriton Points 30447

Arrays.asList peut aider ici:

 new ArrayList<Integer>(Arrays.asList(1,2,3,5,8,13,21));
 

65voto

Brian Agnew Points 143181

Oui.

new ArrayList<String>(){{
   add("A");
   add("B");
}}

Ce qui est en train de faire est de créer une classe dérivée de l' ArrayList<String> (à l'extérieur des accolades pour ce faire) et ensuite déclarer un statique initialiser (l'intérieur des accolades). C'est en fait un intérieur de classe de la classe conteneur, et ainsi elle aura un implicite this pointeur. Pas un problème, sauf si vous voulez serialise.

Je comprends que Java 7 fournissent supplémentaire des constructions d'un langage à faire précisément ce que vous voulez.

36voto

Fred Haslam Points 4423

Voici le plus proche que vous pouvez obtenir:

 ArrayList<String> list = new ArrayList(Arrays.asList("Ryan", "Julie", "Bob"));
 

Vous pouvez aller encore plus simple avec:

 List<String> list = Arrays.asList("Ryan", "Julie", "Bob")
 

En regardant la source pour Arrays.asList, il construit un ArrayList, mais est par défaut converti en liste. Vous pouvez donc le faire (mais pas de manière fiable pour les nouveaux JDK):

 ArrayList<String> list = (ArrayList<String>)Arrays.asList("Ryan", "Julie", "Bob")
 

27voto

John D Points 406

Arrays.asList ("Ryan", "Julie", "Bob");

9voto

jayshao Points 1608

Eh bien, en Java, il n'y a pas de syntaxe littérale pour les listes, vous devez donc faire .add ().

Si vous avez beaucoup d'éléments, c'est un peu verbeux, mais vous pouvez soit:

  1. utiliser Groovy ou quelque chose comme ça
  2. utiliser Arrays.asList (array)

2 ressemblerait à quelque chose comme:

 String[] elements = new String[] {"Ryan", "Julie", "Bob"};
List list = new ArrayList(Arrays.asList(elements));
 

Cela entraîne cependant une création d'objet inutile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X