Hoe converteer ik een string naar een ArrayList?

In mijn String kan ik een willekeurig aantal woorden hebben die door komma’s worden gescheiden. Ik wilde dat elk woord werd toegevoegd aan een ArrayList. Bijv.:

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

Antwoord 1, autoriteit 100%

Probeer iets als

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]

Dit bericht is hierherschreven als een artikel.


Antwoord 2, autoriteit 12%

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());

Antwoord 3, autoriteit 3%

Optie1:

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

Optie2:

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

Naar mijn mening is optie 1 beter omdat

  1. we kunnen het aantal ArrayList-objecten dat wordt gemaakt, verminderen van 2 naar 1. De asList-methode creëert en retourneert een ArrayList-object.
  2. zijn prestaties zijn veel beter (maar het geeft een lijst met een vaste grootte terug).

Raadpleeg de documentatie hier


Antwoord 4, autoriteit 3%

In Java 9, met behulp van List#of, een onveranderlijke lijst met statische fabrieksmethoden, wordt eenvoudiger.

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

Antwoord 5

Ok, ik ga hier verder op de antwoorden omdat veel van de mensen die hier komen de string willen splitsen door een spatie. Dit is hoe het moet:

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

Antwoord 6

Als je importeert of je hebt een array (van het type string) in je code en je moet deze converteren naar arraylist (natuurlijke string), dan is het gebruik van collecties beter. zoals dit:

String array1[] = getIntent().getExtras().getStringArray("key1"); or String array1[] = ... then
List allEds = new ArrayList(); Collections.addAll(allEds, array1);

Antwoord 7

Je zou kunnen gebruiken:

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

Je moet jezelf afvragen of je de ArrayList echt nodig hebt. Heel vaak ga je de lijst filteren op basis van aanvullende criteria, waarvoor een stream perfect is. Misschien wil je een set; misschien wilt u ze filteren door middel van een andere reguliere expressie, enz. Java 8 biedt trouwens deze zeer nuttige extensie, die werkt op elke CharSequence: https://docs.oracle.com/ javase/8/docs/api/java/util/regex/Pattern.html#splitAsStream-java.lang.CharSequence-. Aangezien u de array helemaal niet nodig hebt, moet u deze niet als volgt maken:

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

Antwoord 8

Als je een stringwilt converteren naar een ArrayList, probeer dan dit:

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

Maar ik zie een string-array in je voorbeeld, dus als je een string-arraywilt converteren naar ArrayList, gebruik dan dit:

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

Antwoord 9

Makkelijker te begrijpen is als volgt:

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

Antwoord 10

Dit gebruikt 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])

Antwoord 11

Laten we een vraag nemen: een string omkeren. Ik zal dit doen met stream().collect(). Maar eerst zal ik de string veranderen in een 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
*/

Antwoord 12

Ik raad aan om de StringTokenizer te gebruiken, is zeer efficiënt

    List<String> list = new ArrayList<>();
     StringTokenizer token = new StringTokenizer(value, LIST_SEPARATOR);
     while (token.hasMoreTokens()) {
           list.add(token.nextToken());
     }

Antwoord 13

Als u guave gebruikt (en dat zou u ook moeten doen, raadpleeg dan effectieve java item #15):

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

Other episodes