How to convert String[] (Array) to Collection, like ArrayList or HashSet?
The easiest way would be:
String[] myArray = ...; List<String> strs = Arrays.asList(myArray);
using the handy Arrays utility class. Note, that you can even do
List<String> strs = Arrays.asList("a", "b", "c");
java.util.Arrays.asList(new String[]{"a", "b"})
The easiest way is through
Arrays.asList(stringArray);
It's a old code, anyway, try it:
import java.util.Arrays; import java.util.List; import java.util.ArrayList; public class StringArrayTest { public static void main(String[] args) { String[] words = {"word1", "word2", "word3", "word4", "word5"}; List<String> wordList = Arrays.asList(words); for (String e : wordList) { System.out.println(e); } } }
Arrays.asList() would do the trick here.
String[] words = {"ace", "boom", "crew", "dog", "eon"}; List<String> wordList = Arrays.asList(words);
For converting to Set, you can do as below
Set<T> mySet = new HashSet<T>(Arrays.asList(words));
String[] w = {"a", "b", "c", "d", "e"}; List<String> wL = Arrays.asList(w);
If you really want to use a set:
String[] strArray = {"foo", "foo", "bar"}; Set<String> mySet = new HashSet<String>(Arrays.asList(strArray)); System.out.println(mySet);
output:
[foo, bar]
Collections.addAll provides the shortest (one-line) receipt
Having
String[] array = {"foo", "bar", "baz"}; Set<String> set = new HashSet<>();
You can do as below
Collections.addAll(set, array);
Whilst this isn't strictly an answer to this question I think it's useful.
Arrays and Collections can bother be converted to Iterable which can avoid the need for performing a hard conversion.
For instance I wrote this to join lists/arrays of stuff into a string with a seperator
public static <T> String join(Iterable<T> collection, String delimiter) { Iterator<T> iterator = collection.iterator(); if (!iterator.hasNext()) return ""; StringBuilder builder = new StringBuilder(); T thisVal = iterator.next(); builder.append(thisVal == null? "": thisVal.toString()); while (iterator.hasNext()) { thisVal = iterator.next(); builder.append(delimiter); builder.append(thisVal == null? "": thisVal.toString()); } return builder.toString(); }
Using iterable means you can either feed in an ArrayList or similar aswell as using it with a String... parameter without having to convert either.
String...