Reputation: 8055
I am trying to convert a hashmap into an array, that I can put in a created string array. I however get java.lang. I have typeconverted my drinkar.keySet().toArray() to String[], but it will still not work.
public String[] receiveArrayList(){
String[] list = new String[0];
try {
ois = new ObjectInputStream(socket.getInputStream());
drinkar = (HashMap<String, ArrayList<String>>) (ois.readObject());
System.out.println(drinkar);
System.out.println(Arrays.toString(drinkar.keySet().toArray()));
list = (String[]) (drinkar.keySet().toArray());
for(int i = 0; i < list.length; i++){
System.out.println(list);
}
} catch (ClassNotFoundException ex) {
System.out.println(ex);
} catch (IOException ex) {
System.out.println(ex);
}
return list;
}
Upvotes: 2
Views: 10898
Reputation: 63359
Use toArray(T[]) as:
String[] list = drinkar.keySet().toArray(new String[0]);
By giving an empty array as the argument, you tell toArray
to create a new array of the same type for you that will be just of the correct size.
Just a note: If you can choose, it's usually more convenient (and safer) to work with collections such as ArrayList
instead of arrays.
Upvotes: 9
Reputation: 19185
Another option is create ArrayList<type>
and add elements and return list.toArray()
. This is exactly what toArray
does on entryset
Can not type code since not front of desktop
Upvotes: 0
Reputation: 66637
drinkar.keySet().toArray()
returns Object[]
not String[]
One of the way may be:
user Collections.toArray(StringArry)
(or)
Iterate through the keySet
and add each element to array.
Upvotes: 4