2010-07-07 5 views
8

En JavaScript puedo construir una matriz de valores de cadena como:Construir un ArrayList de cadenas en Java tan simple como se puede en Javascript

var stuff = new Array('foo','bar','baz','boz','gaz','goz'); 

o incluso más fácil

var stuff = 'foo,bar,baz,boz,gaz,goz'.split(','); 

En Java parece excesivamente detallado y complejo ... ¿hay alguna manera más fácil que esto?

ArrayList<String> stuff = new ArrayList<String>(); 
stuff.add("foo"); 
stuff.add("bar"); 
stuff.add("baz"); 
stuff.add("boz"); 
stuff.add("gaz"); 
stuff.add("goz"); 

En mi escenario real que tengo 30-40 artículos de entrar en el ArrayList ... me imagino ahí sólo tiene que haber una manera más fácil! ¿Cuál es el bit obvio que estoy pasando por alto?

+4

Y no se olvide de las cosas 'var = [ 'foo', 'valor', 'baz', 'Boz', 'gas',' Goz ']; ' – Gabe

+0

Si tiene curiosidad acerca de Java 7, lea más acerca de los literales de colecciones aquí: http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/001193.html – Jeremy

Respuesta

14

List<String> strings = Arrays.asList(new String[] {"foo", "bar", "baz"}); o List<String> strings = Arrays.asList("foo,bar,baz".split(","));

+6

' Arrays.asList' acepta los parámetros varargs. Por lo tanto, se puede llamar como 'List strings = Arrays.asList (" foo "," bar "," baz ")'. Mejor aún, haga una 'importación estática' para' Arrays.asList' y luego se vuelve aún más simple: 'List strings = asList (" foo "," bar "," baz ")'. –

+1

@ abhin4v: Ese último es lo que uso; reduce muy fuertemente la cantidad de ruido, y también está en las bibliotecas base. –

+0

Para un 'java.util.ArrayList' real, deberá envolverlo en' nuevo 'java.util.ArrayList (...)'. –

1

Arrays.asList() es una buena manera de conseguir una aplicación de lista, a pesar de que técnicamente no es una implementación ArrayList, sino un tipo interno.

Si realmente necesita que sea un ArrayList se podría escribir un método de utilidad rápida:

public static List<String> create(String... items) { 
    List<String> list = new ArrayList<String>(items.length); 
    for (String item : items) { 
     list.add(item); 
    } 

    return list; 
} 
+0

Debo añadir que splix tiene una buena solución y es probable que no le importe la implementación real, pero tendrá que cambiar su declaración de variables de 'ArrayList cosas' a 'Listar cosas' – Jeff

1

Si está jamming 30-40 artículos en una lista en tiempo de compilación, que podría ser un síntoma de una mayor enfermedad Depende mucho de lo que está implementando. Todavía puede usar split, si realmente quiere. Entonces solo haz una inserción masiva a tu lista.

0

Con la salvedad de que sólo estoy aprendiendo Colecciones de Java a mí mismo, las siguientes compila y ejecuta para mí:

import java.util.*; 
class ArrayListStrings { 
    public static void main(String[] args) { 
     String[] stuffArray = {"foo","bar","baz","boz","gaz","goz"}; 
     ArrayList<String> stuff = new ArrayList<String>(); 
     stuff.addAll(Arrays.asList(stuffArray)); 
     for (int i = 0; i < stuff.toArray().length; i++) 
      System.out.println(stuff.toArray()[i]); 
    } 
} 

La salida es:

foo
barra
Baz
boz
gaz
goz

Cuestiones relacionadas