Подтвердить что ты не робот

Как преобразовать String в ArrayList?

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

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

Ответ 1

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

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]

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

Вариант 1:

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

Вариант 2:

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

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

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

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

Ответ 5

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

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

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

Ответ 6

Если вы хотите преобразовать строку в 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;
}

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

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

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

Проще понять это так:

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

Ответ 10

Давайте возьмем вопрос: перевернуть строку. Я сделаю это с помощью stream(). Collect(). Но сначала я изменю строку в 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
*/

Ответ 11

Я рекомендую использовать StringTokenizer, очень эффективный

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

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

Ответ 12

Это использует Gson в 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])

Ответ 14

Это ответ, рекомендованный Android

<string-array name="android_versions">

<item>Android</item>
<item>Ice Cream Sandwich</item>
<item>Jelly Bean</item>
<item>Kitkat</item>
<item>Lollipop</item>
<item>Marshmallow</item>
<item>Nougat</item>
<item>Oreo</item>
<item>Pie</item>
<item>Q</item>

</string-array>

ArrayList<String> names = new ArrayList<>();
//List<String> names = new ArrayList<>();

Collections.addAll(names, getResources().getStringArray(R.array.android_versions));