Преобразование hashmap в stringarray
Я пытаюсь преобразовать hashmap в массив, который я могу поместить в созданный массив строк. Я однако получаю java.lang. Я перевернул мой drinkar.keySet(). ToArray() в String[], но он все равно не будет работать.
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;
}
4 ответа
drinkar.keySet().toArray()
возвращается Object[]
не String[]
Одним из способов может быть:
Пользователь Collections.toArray (StringArry)
(или же)
Итерация по keySet
и добавьте каждый элемент в массив.
Используйте toArray(T[]) как:
String[] list = drinkar.keySet().toArray(new String[0]);
Дав в качестве аргумента пустой массив, вы сообщаете toArray
создать новый массив того же типа для вас, который будет только правильного размера.
Просто примечание: если вы можете выбрать, как правило, удобнее (и безопаснее) работать с такими коллекциями, как ArrayList
вместо массивов.
Другой вариант - создать ArrayList<type>
и добавить элементы и вернуть list.toArray()
, Это именно то, что toArray
делает на entryset
Не могу набрать код, так как не на передней части рабочего стола