calbertts
calbertts

Reputation: 1513

Convert List<Object> to String[] in Java

I need to convert from List<Object> to String[].

I made:

List<Object> lst ...
String arr = lst.toString();

But I got this string:

["...", "...", "..."]

is just one string, but I need String[]

Thanks a lot.

Upvotes: 19

Views: 132295

Answers (7)

akhil_mittal
akhil_mittal

Reputation: 24157

Java 8

Java 8 has the option of using streams as well.

List<Object> lst = new ArrayList<>(); 
lst.add("Apple"); 
String[] strings = lst.stream().toArray(String[]::new); 
System.out.println(Arrays.toString(strings));  // [Apple]

If we have a stream of Object, we would need an intermediate operation to do object-to-string conversion, and a terminal operation to collect the results. We can use Objects.toString(obj, null) or any other such implementation for string conversion.

String[] output = lst.stream()
    .map((obj) -> Objects.toString(obj, null))
    .toArray(String[]::new);

Upvotes: 11

Umasankar
Umasankar

Reputation: 141

There is a simple way available in Kotlin

var lst: List<Object> = ...
    
listOFStrings: ArrayList<String> = (lst!!.map { it.name })

Upvotes: 0

husayt
husayt

Reputation: 15139

Using Guava

List<Object> lst ...    
List<String> ls = Lists.transform(lst, Functions.toStringFunction());

Upvotes: 2

Srujan Kumar Gulla
Srujan Kumar Gulla

Reputation: 5841

Lot of concepts here which will be useful:

List<Object> list = new ArrayList<Object>(Arrays.asList(new String[]{"Java","is","cool"}));
String[] a = new String[list.size()];
list.toArray(a);

Tip to print array of Strings:

System.out.println(Arrays.toString(a));

Upvotes: 2

sundar
sundar

Reputation: 1760

If we are very sure that List<Object> will contain collection of String, then probably try this.

List<Object> lst = new ArrayList<Object>();
lst.add("sample");
lst.add("simple");
String[] arr = lst.toArray(new String[] {});
System.out.println(Arrays.deepToString(arr));

Upvotes: 5

Steve Chambers
Steve Chambers

Reputation: 39394

You could use toArray() to convert into an array of Objects followed by this method to convert the array of Objects into an array of Strings:

Object[] objectArray = lst.toArray();
String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);

Upvotes: 14

Dan D.
Dan D.

Reputation: 32391

You have to loop through the list and fill your String[].

String[] array = new String[lst.size()];
int index = 0;
for (Object value : lst) {
  array[index] = (String) value;
  index++;
}

If the list would be of String values, List then this would be as simple as calling lst.toArray(new String[0]);

Upvotes: 28

Related Questions