it-swarm.com.de

Wie konvertiere ich einen String in eine ArrayList?

In meinem String kann ich eine beliebige Anzahl von Wörtern haben, die durch Kommas getrennt sind. Ich wollte, dass jedes Wort in eine ArrayList eingefügt wurde. Z.B.:

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

Versuchen Sie etwas wie

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]

Dieser Beitrag wurde als Artikel hier neu geschrieben.

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 wurde die Verwendung von List#of, einer statischen Factory-Methode für unveränderliche Listen, einfacher.

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

Option 1

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

Option 2:

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

Meiner Meinung nach ist Option1 besser 

  1. wir können die Anzahl der erstellten ArrayList-Objekte von 2 auf 1 reduzieren. Die asList-Methode erstellt ein ArrayList-Objekt und gibt dieses zurück.
  2. seine Leistung ist viel besser (aber es gibt eine Liste mit fester Größe zurück).

Bitte beachten Sie die Dokumentation hier

5
Andy

Wenn Sie importieren oder ein Array (vom Typ string) in Ihrem Code haben, das Sie in arraylist (offcourse string) konvertieren müssen, ist die Verwendung von Collections besser. so was:

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

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

Du könntest benutzen: 

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

Sie sollten sich fragen, ob Sie die ArrayList überhaupt brauchen. Häufig filtern Sie die Liste nach zusätzlichen Kriterien, für die ein Stream perfekt ist. Sie möchten vielleicht ein Set; Möglicherweise möchten Sie sie mithilfe eines anderen regulären Ausdrucks filtern. Java 8 bietet übrigens diese sehr nützliche Erweiterung, die für alle CharSequence: https://docs.Oracle.com/javase/8/ funktioniert. docs/api/Java/util/regex/Pattern.html # splitAsStream-Java.lang.CharSequence- . Da Sie das Array überhaupt nicht benötigen, sollten Sie es nicht so erstellen: 

// 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

Wenn Sie eine Zeichenfolge in eine ArrayList konvertieren möchten, versuchen Sie Folgendes:

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

Ich sehe jedoch ein String-Array in Ihrem Beispiel. Wenn Sie ein String-Array in ArrayList konvertieren möchten, verwenden Sie Folgendes:

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, ich werde die Antworten hier erweitern, da viele Leute, die hierher kommen, die Saite durch einen Whitespace teilen wollen. So wird es gemacht:

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

Nehmen wir eine Frage: Reverse a String. Das mache ich mit stream (). Collect (). Aber zuerst werde ich den String in eine ArrayList umwandeln.

    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

Wenn Sie Guave verwenden (und Sie sollten es sein, siehe effektives Java-Element Nr. 15 ):

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

Ich empfehle den StringTokenizer zu verwenden, der sehr effizient ist 

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

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

Dies verwendet 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])

Leichter zu verstehen ist wie folgt:

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