2

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;

}
DrWooolie
  • 7,637
  • 7
  • 20
  • 19

4 Answers4

9

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.

Petr
  • 62,528
  • 13
  • 153
  • 317
4

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.

kosa
  • 65,990
  • 13
  • 130
  • 167
  • thanks, but i cant seem to get it right. i dont think i know how to iterate correctly. – DrWooolie Aug 22 '12 at 17:41
  • while(it.hasNext()){ String temp = it.next(); //then add temp to String array. } – kosa Aug 22 '12 at 17:46
  • is there a way to add strings to arrays? doesnt seem like it – DrWooolie Aug 22 '12 at 17:54
  • arr[0]=temp; this will add temp at index 0 – kosa Aug 22 '12 at 17:58
  • it didnt work, i still get nothing. but i tried another way. created an arraylist, added temp to the arraylist and it worked and i could print it easily. but when i tried to convert it to array, it gave me java.lang. – DrWooolie Aug 22 '12 at 18:02
1

String st[]=hm.keySet().toArray(new String[hm.size()]);

Jay Shah
  • 3,553
  • 1
  • 27
  • 26
0

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

Amit Deshpande
  • 19,001
  • 4
  • 46
  • 72