Home » Java » How to convert comma-separated String to ArrayList?

How to convert comma-separated String to ArrayList?

Posted by: admin November 2, 2017 Leave a comment

Questions:

Is there any built-in method in Java which allows us to convert comma separated String to some container (e.g array, List or Vector)? Or do I need to write custom code for that?

String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = //method that converts above string into list??
Answers:

Convert comma separated String to List

List<String> items = Arrays.asList(str.split("\s*,\s*"));

The above code splits the string on a delimiter defined as: zero or more whitespace, a literal comma, zero or more whitespace which will place the words into the list and collapse any whitespace between the words and commas.


Please note that this returns simply a wrapper on an array: you CANNOT for example .remove() from the resulting List. For an actual ArrayList you must further use new ArrayList<String>.

Questions:
Answers:

Arrays.asList returns a fixed-size List backed by the array. If you want a normal mutable java.util.ArrayList you need to do this:

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

Or, using Guava:

List<String> list = Lists.newArrayList(Splitter.on(" , ").split(string));

Using a Splitter gives you more flexibility in how you split the string and gives you the ability to, for example, skip empty strings in the results and trim results. It also has less weird behavior than String.split as well as not requiring you to split by regex (that’s just one option).

Questions:
Answers:

Two steps:

  1. String [] items = commaSeparated.split(",");
  2. List<String> container = Arrays.asList(items);
Questions:
Answers:

Here is another one for converting CSV to ArrayList:

String str="string,with,comma";
ArrayList aList= new ArrayList(Arrays.asList(str.split(",")));
for(int i=0;i<aList.size();i++)
{
    System.out.println(" -->"+aList.get(i));
}

Prints you

–>string
–>with
–>comma

Questions:
Answers:

There is no built-in method for this but you can simply use split() method in this.

String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = 
new  ArrayList<String>(Arrays.asList(commaSeparated.split(",")));

Questions:
Answers:
List<String> items = Arrays.asList(commaSeparated.split(","));

That should work for you.

Questions:
Answers:

you can combine asList and split

Arrays.asList(CommaSeparated.split("\s*,\s*"))

Questions:
Answers:

If a List is the end-goal as the OP stated, then already accepted answer is still the shortest and the best. However I want to provide you alternatives using Java 8 Streams, that will give you more benefit if it is part of a pipeline for further processing.

By wrapping the result of the .split function (a native array) into a stream and then converting to a list.

List<String> list =
  Stream.of("a,b,c".split(","))
  .collect(Collectors.toList());

Or by using the RegEx parsing api:

List<String> list = 
  Pattern.compile(",")
  .splitAsStream("a,b,c")
  .collect(Collectors.toList());

By themselves, these code examples do not seem to add a lot (except more typing), but if you are planning to do more, like this answer on converting a String to a List of Longs exemplifies, the streaming API is really powerful by allowing to pipeline your operations one after the other.

For the sake of, you know, completeness.

Questions:
Answers:

An example using Collections.

import java.util.Collections;
 ...
String commaSeparated = "item1 , item2 , item3";
ArrayList<String> items = new ArrayList<>();
Collections.addAll(items, commaSeparated.split("\s*,\s*"));
 ...

Questions:
Answers:

This below code may help you,

List myList = new ArrayList();
String myStr = "item1 , item2 , item3";
myList = Arrays.asList(myStr.split(" , "));

Questions:
Answers:
List<String> items= Stream.of(commaSeparated.split(","))
     .map(String::trim)
     .collect(toList());

Questions:
Answers:

You can first split them using String.split(","), and then convert the returned String array to an ArrayList using Arrays.asList(array)

Questions:
Answers:

In groovy, you can use tokenize(Character Token) method:

list = str.tokenize(',')

Questions:
Answers:

I usually use precompiled pattern for the list. And also this is slightly more universal since it can consider brackets which follows some of the listToString expressions.

private static final Pattern listAsString = Pattern.compile("^\[?([^\[\]]*)\]?$");

private List<String> getList(String value) {
  Matcher matcher = listAsString.matcher((String) value);
  if (matcher.matches()) {
    String[] split = matcher.group(matcher.groupCount()).split("\s*,\s*");
    return new ArrayList<>(Arrays.asList(split));
  }
  return Collections.emptyList();

Questions:
Answers:

You can use Guava to split the string, and convert it into an ArrayList. This works with an empty string as well, and returns an empty list.

import com.google.common.base.Splitter;
import com.google.common.collect.Lists;

String commaSeparated = "item1 , item2 , item3";

// Split string into list, trimming each item and removing empty items
ArrayList<String> list = Lists.newArrayList(Splitter.on(',').trimResults().omitEmptyStrings().splitToList(commaSeparated));
System.out.println(list);

list.add("another item");
System.out.println(list);

outputs the following:

[item1, item2, item3]
[item1, item2, item3, another item]

Questions:
Answers:
List commaseperated = new ArrayList();
String mylist = "item1 , item2 , item3";
mylist = Arrays.asList(myStr.trim().split(" , "));

// enter code here

Questions:
Answers:

String -> Collection conversion: (String -> String[] -> Collection)

//         java version 8

String str = "aa,bb,cc,dd,aa,ss,bb,ee,aa,zz,dd,ff,hh";

//          Collection,
//          Set , List,
//      HashSet , ArrayList ...
// (____________________________)
// ||                          ||
// \/                          \/
Collection<String> col = new HashSet<>(Stream.of(str.split(",")).collect(Collectors.toList()));

Collection -> String[] conversion:

String[] se = col.toArray(new String[col.size()]);

String -> String[] conversion:

String[] strArr = str.split(",");

And Collection -> Collection:

List<String> list = new LinkedList<>(col);

Questions:
Answers:
List<String> items = Arrays.asList(s.split("[,\s]+"));

Questions:
Answers:

There are many ways to solve this using streams in Java 8 but IMO the following one liners are straight forward:

String  commaSeparated = "item1 , item2 , item3";
List<String> result1 = Arrays.stream(commaSeparated.split(" , "))
                                             .collect(Collectors.toList());
List<String> result2 = Stream.of(commaSeparated.split(" , "))
                                             .collect(Collectors.toList());

Questions:
Answers:
ArrayList<HashMap<String, String>> mListmain = new ArrayList<HashMap<String, String>>(); 
String marray[]= mListmain.split(",");

Questions:
Answers:

convert Collection into string as comma seperated in Java 8

listOfString object contains [“A”,”B”,”C” ,”D”] elements-

listOfString.stream().map(ele->"'"+ele+"'").collect(Collectors.joining(","))

Output is :-
‘A’,’B’,’C’,’D’

And Convert Strings Array to List in Java 8

    String string[] ={"A","B","C","D"};
    List<String> listOfString = Stream.of(string).collect(Collectors.toList());

Questions:
Answers:

You can StringUtils from apache lib.

Example

StringUtils.join(yourStirng, ',');