it-swarm.it

Come convertire una stringa in un arraylist?

Nella mia stringa, posso avere un numero arbitrario di parole che sono separate da virgola. Volevo che ogni parola fosse aggiunta in una lista di array. Per esempio.:

String s = "a,b,c,d,e,.........";
81
Sameek Mishra

Prova qualcosa del genere

List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));

Demo:

String s = "lorem,ipsum,dolor,sit,amet";

List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));

System.out.println(myList);  // prints [lorem, ipsum, dolor, sit, amet]

Questo post è stato riscritto come un articolo qui .

209
aioobe
 String s1="[a,b,c,d]";
 String replace = s1.replace("[","");
 System.out.println(replace);
 String replace1 = replace.replace("]","");
 System.out.println(replace1);
 List<String> myList = new ArrayList<String>(Arrays.asList(replace1.split(",")));
 System.out.println(myList.toString());
27
Sameek Mishra

In Java 9, usando List#of, che è un elenco immutabile di metodi statici di fabbrica, è diventato più semplice.

 String s = "a,b,c,d,e,.........";
 List<String> lst = List.of(s.split(","));
6
Ravi

Opzione 1

List<String> list = Arrays.asList("hello");

Opzione 2:

List<String> list = new ArrayList<String>(Arrays.asList("hello"));

A mio parere, Option1 è migliore perché 

  1. possiamo ridurre il numero di oggetti ArrayList creati dal 2 al 1. Il metodo asList crea e restituisce un oggetto ArrayList.
  2. le sue prestazioni sono molto migliori (ma restituisce una lista di dimensioni fisse).

Si prega di fare riferimento alla documentazione qui

5
Andy

Se stai importando o hai un array (di tipo string) nel tuo codice e devi convertirlo in arraylist (stringa offcourse) allora l'uso delle collezioni è migliore. come questo:

String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then

List allEds = new ArrayList(); Collections.addAll(allEds, array1);
2
Andy

Potresti usare: 

List<String> tokens = Arrays.stream(s.split("\\s+")).collect(Collectors.toList());

Dovresti chiederti se hai veramente bisogno di ArrayList in primo luogo. Molto spesso, filtrerai l'elenco in base a criteri aggiuntivi, per i quali uno stream è perfetto. Potresti volere un set; potresti volerli filtrare per mezzo di un'altra espressione regolare, ecc. Java 8 fornisce questa estensione molto utile, a proposito, che funzionerà su qualsiasi CharSequence: https://docs.Oracle.com/javase/8/ docs/api/Java/util/regex/Pattern.html # splitAsStream-Java.lang.CharSequence- . Poiché non hai affatto bisogno dell'array, evita di crearlo in questo modo: 

// This will presumably be a static final field somewhere.
Pattern splitter = Pattern.compile("\\s+");
// ...
String untokenized = reader.readLine();
Stream<String> tokens = splitter.splitAsStream(untokenized);
1
AbuNassar

Se vuoi convertire un string in un ArrayList prova questo:

public ArrayList<Character> convertStringToArraylist(String str) {
    ArrayList<Character> charList = new ArrayList<Character>();      
    for(int i = 0; i<str.length();i++){
        charList.add(str.charAt(i));
    }
    return charList;
}

Ma vedo un array di stringhe nel tuo esempio, quindi se vuoi convertire un string array in ArrayList usa questo:

public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){
    ArrayList<String> stringList = new ArrayList<String>();
    for (String s : strArr) {
        stringList.add(s);
    }
    return stringList;
}
1
denolk

Ok, ho intenzione di estendere le risposte qui poiché molte delle persone che vengono qui vogliono dividere la stringa con uno spazio bianco . Questo è come è fatto:

List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));
1
Gherbi Hicham

Prendiamo una domanda: Invertire una stringa. Lo farò usando stream (). Collect (). Ma prima cambierò la stringa in ArrayList.

    public class StringReverse1 {
    public static void main(String[] args) {

        String a = "Gini Gina  Proti";

        List<String> list = new ArrayList<String>(Arrays.asList(a.split("")));

        list.stream()
        .collect(Collectors.toCollection( LinkedList :: new ))
        .descendingIterator()
        .forEachRemaining(System.out::println);



    }}
/*
The output :
i
t
o
r
P


a
n
i
G

i
n
i
G
*/
0
Soudipta Dutta

Se stai usando guava (e dovresti essere, guarda efficace articolo Java # 15 ):

ImmutableList<String> list = ImmutableList.copyOf(s.split(","));
0
sabujp

Vi consiglio di usare StringTokenizer, è molto efficiente 

     List<String> list = new ArrayList<>();

     StringTokenizer token = new StringTokenizer(value, LIST_SEPARATOR);
     while (token.hasMoreTokens()) {
           list.add(token.nextToken());
     }
0
Philippe

Questo sta usando Gson in Kotlin 

 val listString = "[uno,dos,tres,cuatro,cinco]"
 val gson = Gson()
 val lista = gson.fromJson(listString , Array<String>::class.Java).toList()
 Log.e("GSON", lista[0])

Più facile da capire è come questo:

String s = "a,b,c,d,e";
String[] sArr = s.split(",");
List<String> sList = Arrays.asList(sArr);
0
Abay