2010-07-07 4 views
8

In JavaScript posso costruire una matrice di valori di stringa come:Costruire un ArrayList di stringhe in Java semplice come si può in Javascript

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

o anche più facile

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

In Java sembra eccessivamente prolisso e complesso ... c'è un modo più semplice di questo?

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

Nel mio scenario reale che ho 30-40 elementi di andare in ArrayList ... io ci cifra è solo essere un modo più semplice! Qual è il bit ovvio che sto trascurando?

+4

E non dimenticate 'roba var = [ 'foo', 'bar', 'Baz', 'boz', 'gas', 'goz ']; ' – Gabe

+0

Se sei curioso di sapere su Java 7, leggi ulteriori informazioni sui letterali di raccolta qui: http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/001193.html – Jeremy

risposta

14

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

+6

' Arrays.asList' accetta parametri varargs. Quindi può essere chiamato come 'List stringhe = Arrays.asList (" foo "," bar "," baz ")'. Meglio ancora, fai un 'import static' per' Arrays.asList' e poi diventa ancora più semplice: 'Elenca stringhe = asList (" pippo "," barra "," baz ")'. –

+1

@ abhin4v: Quest'ultimo è quello che uso; riduce molto la quantità di rumore, ed è anche nelle librerie di base. –

+0

Per un effettivo 'java.util.ArrayList', sarà necessario inserirlo in' new 'java.util.ArrayList (...)'. –

1

Arrays.asList() è un buon modo per ottenere un'implementazione List, anche se non è tecnicamente un'implementazione ArrayList, ma un tipo interno.

Se veramente bisogno di essere un ArrayList si potrebbe scrivere un metodo di utilità rapido:

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

Dovrei aggiungere che splix ha una buona soluzione e probabilmente non ti interessa l'effettiva implementazione, ma dovrai cambiare la dichiarazione delle variabili da 'ArrayList roba' a 'Lista roba' – Jeff

1

Se stai disturbo 30-40 elementi in un elenco al momento della compilazione, che potrebbe essere sintomatico di una maggiore malato. Dipende molto da ciò che stai implementando. Puoi comunque usare split, se proprio vuoi. Quindi fai un inserto di massa nella tua lista.

0

con l'avvertenza che sto solo imparando Collezioni di Java stesso, i seguenti compila e funziona per me:

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]); 
    } 
} 

L'output è:

foo
bar
baz
boz
gaz
goz

0

come circa il codice qui sotto usando http://code.google.com/p/guava-libraries/

import static com.google.common.collect.Lists.*; 

List<String> stuff = newArrayList("foo","bar","baz","boz","gaz","goz");