How to convert ArrayList to String[] in java, Arraylist contains VO objects
Solution 1
String [] countriesArray = countryList.toArray(new String[countryList.size()]);
I have assumed that your country List name is countryList
.
So to convert ArrayList of any class into array use following code. Convert T into the class whose arrays you want to create.
List<T> list = new ArrayList<T>();
T [] countries = list.toArray(new T[list.size()]);
Solution 2
Please help me to convert ArrayList to String[], ArrayList Contains Values Object(VO) as Values.
As you mentioned that list contains Values Object i.e. your own class you need toString() overridden to make this work correctly.
This code works. Assuming VO
is your Value Object class.
List<VO> listOfValueObject = new ArrayList<VO>();
listOfValueObject.add(new VO());
String[] result = new String[listOfValueObject.size()];
for (int i = 0; i < listOfValueObject.size(); i++) {
result[i] = listOfValueObject.get(i).toString();
}
Arrays.sort(result);
List<String> sortedList = Arrays.asList(result);
The snippet of
List<VO> listOfValueObject = new ArrayList<VO>();
listOfValueObject.add(new VO());
String[] countriesArray = listOfValueObject.toArray(new String[listOfValueObject.size()]);
will give you ArrayStoreException
due VO
is not the String
type as required by native method arraycopy
subsequently called from toArray
one.
Solution 3
In case your ArrayList
contains String
s, you can simply use the toArray
method:
String[] array = list.toArray( new String[list.size()] );
If that is not the case (as your question is not completely clear on this), you will have to manually loop over all elements
List<MyRandomObject> list;
String[] array = new String[list.size() ];
for( int i = 0; i < list.size(); i++ ){
MyRandomObject listElement = list.get(i);
array[i] = convertObjectToString( listElement );
}
Solution 4
String[] array = list.toArray(new String[list.size()]);
What are we doing here:
String[]
array is theString
array you need to convert yourArrayList
to- list is your
ArrayList
of VO objects that you have in hand List#toArray(String[] object)
is the method to convert List objects to Array objects
Solution 5
As correctly suggested by Viktor, I have edited my snippet.
The is a method in ArrayList(toArray) like:
List<VO> listOfValueObject // is your value object
String[] countries = new String[listOfValueObject.size()];
for (int i = 0; i < listOfValueObject.size(); i++) {
countries[i] = listOfValueObject.get(i).toString();
}
Then to sort you have::
Arrays.sort(countries);
Then re-converting to List like ::
List<String> countryList = Arrays.asList(countries);
user1000535
Updated on June 24, 2020Comments
-
user1000535 almost 4 years
Please help me to convert ArrayList to String[]. The ArrayList contains values of type Object(VO).
For example,
The problem is that I need to convert a country List to String Array, sort it and then put it in a list. However I am getting a ClassCastException.
-
Viktor Stolbin almost 12 yearstoArray(new String[...]) will work only if list is of the same String type, won't it? Assuming the question the list is of type ValueObject.
-
Viktor Stolbin almost 12 yearsThis also will throw a ArrayStoreException.
-
Viktor Stolbin almost 12 yearsAnd this will throw a ArrayStoreException too.
-
Sashi Kant almost 12 years@ViktorStolbin: thanks of your suggestion, have edited my snippet, plz check
-
Pramod Kumar almost 12 yearsIt means that your are storing the wrong type of object into an array. You should reveal your code
-
Viktor Stolbin almost 12 yearsIt depends on what type the input list is :) I believe it is rather of type Value Object than the String type. You can see this in the question topic.
-
user1000535 almost 12 yearsThank you very much, it helps me a lot to solve my problem, I got exact solution. the code is, List<CountryVO> countryList=new ArrayList<CountryVO>(); CountryVO vo=new CountryVO(); vo.setName("Malaisie"); countryList.add(vo); CountryVO vo1=new CountryVO(); vo1.setName("Allemagne"); countryList.add(vo1); String[] array = new String[countryList.size() ]; for( int i = 0; i < countryList.size(); i++ ){ CountryVO listElement = countryList.get(i); array[i]=listElement.getName(); }Arrays.sort(array); Thanks to All