2011-10-14 11 views
11

Tengo una pregunta muy simple:matriz java lista rápida

¿Cómo puedo hacer el código más simple en Java:

ArrayList<String> s = new ArrayList<String>(); 
s.add("str1"); 
s.add("str hello"); 
s.add("str bye"); 
//... 

Algo así:

ArrayList<String> s = {"a1", "str", "mystr"}; 

o que:

ArrayList<String> s = new ArrayList<String>("a1", "str", "mystr"); 

o aquel:

ArrayList<String> s = new ArrayList<String>(); 
s.addAll("a1", "str", "mystr"); 

o que:

ArrayList<String> s = new ArrayList<String>(); 
s.addAll(new ArrayElements("a1", "str", "mystr")); 

sólo quiero pizca de sintaxis. Gracias.

+0

http://stackoverflow.com/questions/2760995/java-arraylist-initialization – Vlad

Respuesta

19

¿Qué tal:

ArrayList<String> s = new ArrayList<String>(); 
Collections.addAll(s, "a1", "str", "mystr"); 
5
List<String> s = Arrays.asList(new String[] {"a1", "str", "mystr"}); 
+0

yo no creo que eso es el método más rápido, va a crear un montón de objetos aquí .. – Rob

+0

@Rob: OP pide simple, no para rápido – amit

+9

'List s = Arrays.asList (" a1 "," str "," mystr ");' es aún mejor –

4

me gustaría utilizar Guava y su maravillosa clase Lists:

List<String> list = Lists.newArrayList("a1", "str", "mystr"); 
22

List<String> s = Arrays.asList("a1", "str", "mystr");

+4

Esto devuelve una lista de tamaño fijo no una java .util.ArrayList. Por lo tanto, es bueno cuando no se necesita agregar o eliminar más elementos. – x22

+3

Esto es cierto. No estaba claro desde el OP si esto sería un problema o no. – dty

4

Usted puede utilizar el doble corsé:

ArrayList<String> s = new ArrayList<String>() 
{{ 
    add("str1"); 
    add("str hello"); 
    add("str bye"); 
    //... 
}}; 
+2

En lugar de simplemente producir sintaxis esotérica, ¿no sería una buena idea explicarle al OP qué es eso y cómo funciona? – dty

+1

dty, es una inicialización con doble llave, explicó en http://c2.com/cgi/wiki?DoubleBraceInitialization en detalle. – SerCe

0

Si está utilizando Java 9, podría utilizar List.of():

List<String> s = List.of("str1", "str hello", "str bye"); 

pero esto sería una lista inmutable. Si necesita un Arraylist mutable:

ArrayList<String> s = new ArrayList<>(List.of("str1", "str hello", "str bye")) 
Cuestiones relacionadas