views:

338

answers:

2

What would be the easiest way to make a CharSequence[] out of ArrayList<String>?

Sure I could iterate through every ArrayList item and copy to CharSequence array, but maybe there is better/faster way?

+7  A: 

You can use List#toArray(T[]) for this.

CharSequence[] cs = list.toArray(new CharSequence[list.size()]);

Here's a little demo:

List<String> list = Arrays.asList("foo", "bar", "waa");
CharSequence[] cs = list.toArray(new CharSequence[list.size()]);
System.out.println(Arrays.toString(cs)); // [foo, bar, waa]
BalusC
+1 - The point is that `CharSequence` is an interface and `String` implements it.
Stephen C
+1  A: 

Given that type String already implements CharSequence, this conversion is as simple as asking the list to copy itself into a fresh array, which won't actually copy any of the underlying character data. You're just copying references to String instances around:

final CharSequence[] chars = list.toArray(new CharSequence[list.size()]);
seh