Добавление разделенных запятыми строк в ArrayList и наоборот - PullRequest
4 голосов
/ 23 мая 2011

Как добавить строку, разделенную запятыми, в ArrayList?Моя строка «returnItems» может содержать 1 или 20 элементов, которые я хотел бы добавить в мой ArrayList «selItemArrayList».

После того, как ArrayList был заполнен, я хотел бы позже повторить его и отформатироватьэлементы в строке через запятую без пробелов между элементами.

Ответы [ 11 ]

16 голосов
/ 23 мая 2011
String returnedItems = "a,b,c";
List<String> sellItems = Arrays.asList(returnedItems.split(","));

Теперь перебираем список и добавляем каждый элемент в StringBuilder:

StringBuilder sb = new StringBuilder();
for(String item: sellItems){
    if(sb.length() > 0){
        sb.append(',');
    }
    sb.append(item);
}
String result = sb.toString();
8 голосов
/ 23 мая 2011

Однострочники всегда популярны:

Collections.addAll(arrayList, input.split(","));
5 голосов
/ 23 мая 2011

split и asList сделать трюк:

String [] strings = returnedItems.split(",");
List<String> list = Arrays.asList(strings);
2 голосов
/ 23 мая 2011

Простой однострочный:

selItemArrayList.addAll(Arrays.asList(returnedItems.split("\\s*,\\s*")));

Конечно, будет сложнее, если у вас есть записи с запятыми в них.

1 голос
/ 16 июля 2019
String csv = "Apple, Google, Samsung";

шаг первый: преобразование отдельной строки запятой в массив строк *

String[] elements = csv.split(",");

шаг второй: преобразование массива строк в список строк

 List<String> fixedLenghtList = Arrays.asList(elements);

шаг третий: исправлено копированиесписок в ArrayList ArrayList listOfString = новый ArrayList (fixedLenghtList);

System.out.println("list from comma separated String : " + listOfString);

System.out.println ("размер ArrayList:" + listOfString.size ());Выход:

list of comma separated String : [Apple, Google, Samsung]


size of ArrayList : 3
1 голос
/ 23 мая 2011

Если в самих строках могут быть запятые, все усложняется. Вместо того, чтобы использовать свой собственный, рассмотрите возможность использования одного из многих парсеров CSV с открытым исходным кодом Хотя они предназначены для чтения в файлах, по крайней мере OpenCSV также будет анализировать отдельную строку, которую вы ей передали.

1 голос
/ 23 мая 2011

Это может помочь:

for (String s : returnedItems.split(",")) {
    selItemArrayList.add(s.trim());
}

//Shorter and sweeter
String [] strings = returnedItems.split(",");
selItemArrayList = Arrays.asList(strings);

//The reverse....

StringBuilder sb = new StringBuilder();
Iterator<String> iter = selItemArrayList.iterator();
while (iter.hasNext()) {
    if (sb.length() > 0) 
        sb.append(",");
    sb.append(iter.next());
}

returnedItems = sb.toString();
0 голосов
/ 23 мая 2011
import com.google.common.base.*;

Iterable<String> items = Splitter.on(",").omitEmptyStrings()
                                 .split("Mango,Apple,Guava");

// Join again!
String itemsString = Joiner.join(",").join(items);
0 голосов
/ 23 мая 2011
String list = "one, two, three, four";
String[] items = list.split("\\p{Punct}");
List<String> aList = Arrays.asList(items);
System.out.println("aList = " + aList);
StringBuilder formatted = new StringBuilder();

for (int i = 0; i < items.length; i++)
{
    formatted.append(items[i].trim());
    if (i < items.length - 1) formatted.append(',');
}

System.out.println("formatted = " + formatted.toString());
0 голосов
/ 23 мая 2011

Вы можете использовать метод split() в String для преобразования String в массив, через который вы можете проходить циклы.

Хотя вы можете пропустить цикл и анализ с помощью регулярного выражения, чтобы удалитьпробелы с использованием replaceAll () в строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...