Как преобразовать строку в ArrayList? - PullRequest
87 голосов
/ 08 сентября 2011

В моей строке может быть произвольное количество слов, разделенных запятой. Я хотел, чтобы каждое слово было добавлено в ArrayList. E.g.:

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

Ответы [ 13 ]

218 голосов
/ 08 сентября 2011

Попробуйте что-то вроде

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

Демо-версия:

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]

Это сообщение было переписано как статья здесь .

28 голосов
/ 08 сентября 2011
 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());
6 голосов
/ 07 октября 2017

В Java 9 использование List#of, представляющего собой статические фабричные методы неизменяемого списка, стало более простым.

 String s = "a,b,c,d,e,.........";
 List<String> lst = List.of(s.split(","));
6 голосов
/ 08 мая 2017

Option1 :

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

Option2 :

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

На мой взгляд, Option1 лучше, потому что

  1. мы можем уменьшить количество создаваемых объектов ArrayList с 2 до 1. asList метод создает и возвращает объект ArrayList.
  2. его производительность намного лучше (но он возвращает список фиксированного размера).

Пожалуйста, обратитесь к документации здесь

2 голосов
/ 04 декабря 2014

Если вы импортируете или у вас есть массив (типа string) в вашем коде, и вам нужно преобразовать его в arraylist (offcourse string), тогда лучше использовать коллекции.как это:

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

List allEds = new ArrayList(); Collections.addAll(allEds, array1);
1 голос
/ 04 октября 2018

Легче понять это так:

String s = "a,b,c,d,e";
String[] sArr = s.split(",");
List<String> sList = Arrays.asList(sArr);
1 голос
/ 07 октября 2017

Вы можете использовать:

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

Вы должны спросить себя, нужен ли вам ArrayList в первую очередь.Очень часто вы собираетесь фильтровать список на основе дополнительных критериев, для которых Stream идеально подходит.Вы можете хотеть набор;вы можете захотеть отфильтровать их с помощью другого регулярного выражения и т. д. Кстати, Java 8 предоставляет это очень полезное расширение, которое будет работать на любом CharSequence: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#splitAsStream-java.lang.CharSequence-., так как вам не нужен массивни в коем случае не создавайте его так:

// 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 голос
/ 26 июня 2016

Хорошо, я собираюсь продолжить здесь ответы, так как многие люди, которые приходят сюда, хотят разделить строку на пробел .Вот как это делается:

List<String> List = new ArrayList<String>(Arrays.asList(s.split("\\s+")));
1 голос
/ 08 сентября 2011

Если вы хотите преобразовать строку в ArrayList , попробуйте это:

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

Но я вижу строковый массив в вашем примере, поэтому, если вы хотите преобразовать строковый массив в ArrayList , используйте это:

public static ArrayList<String> convertStringArrayToArraylist(String[] strArr){
    ArrayList<String> stringList = new ArrayList<String>();
    for (String s : strArr) {
        stringList.add(s);
    }
    return stringList;
}
0 голосов
/ 26 января 2019

Если вы используете гуаву (и вы должны быть, см. эффективный элемент Java # 15 ):

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