[java] 자바 : HashMap <String, Object>를 배열로 변환하는 방법

a HashMap<String, Object>를 배열 로 변환해야합니다 . 누구든지 그것이 어떻게 끝났는지 보여줄 수 있습니까?



답변

hashMap.keySet().toArray(); // returns an array of keys
hashMap.values().toArray(); // returns an array of values

편집하다

두 배열의 순서가 동일하지 않을 수 있습니다. 쌍 키 / 값이 필요할 때 반복에 대한 더 나은 접근 방식은 oxbow_lakes 답변을 참조하십시오.


답변

키와 값을 원하는 경우 언제든지 다음을 통해이 작업을 수행 할 수 있습니다 entrySet.

hashMap.entrySet().toArray(); // returns a Map.Entry<K,V>[]

각 항목에서 (물론) 및 메서드 를 통해 키 값을 모두 가져올 수 있습니다.getKeygetValue


답변

그렇다면 HashMap<String, SomeObject> hashMap:

hashMap.values().toArray();

를 반환합니다 Object[]. 대신 유형의 배열을 원하면 SomeObject다음을 사용할 수 있습니다.

hashMap.values().toArray(new SomeObject[0]);


답변

각 키 및 값 배열의 올바른 순서를 보장하려면 이것을 사용하십시오 (다른 답변 Set은 주문에 대해 보장하지 않는 개별을 사용 합니다.

Map<String, Object> map = new HashMap<String, Object>();
String[] keys = new String[map.size()];
Object[] values = new Object[map.size()];
int index = 0;
for (Map.Entry<String, Object> mapEntry : map.entrySet()) {
    keys[index] = mapEntry.getKey();
    values[index] = mapEntry.getValue();
    index++;
}


답변

CrackerJacks 제안에 대한 대안으로, HashMap이 순서를 유지하도록하려면 대신 LinkedHashMap 사용을 고려할 수 있습니다. 내가 아는 한 기능은 HashMap과 동일하지만 FIFO이므로 항목이 추가 된 순서를 유지합니다.


답변

나는 @kmccoy와 거의 동일하게 사용했지만 대신에 keySet()이것을했습니다.

hashMap.values().toArray(new MyObject[0]);


답변

Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");

Object[][] twoDarray = new Object[map.size()][2];

Object[] keys = map.keySet().toArray();
Object[] values = map.values().toArray();

for (int row = 0; row < twoDarray.length; row++) {
    twoDarray[row][0] = keys[row];
    twoDarray[row][1] = values[row];
}

// Print out the new 2D array
for (int i = 0; i < twoDarray.length; i++) {
    for (int j = 0; j < twoDarray[i].length; j++) {
        System.out.println(twoDarray[i][j]);
    }
}