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>[]
각 항목에서 (물론) 및 메서드 를 통해 키 와 값을 모두 가져올 수 있습니다.getKey
getValue
답변
그렇다면 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]);
}
}