Java: HashMap을 어레이 로 변환하는 방법
변환이 필요합니다.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]);
Java 8+를 사용하고 있으며 2D가 필요한 경우Array
TestNG 데이터 프로바이더의 경우는, 다음과 같이 시험할 수 있습니다.
map.entrySet()
.stream()
.map(e -> new Object[]{e.getKey(), e.getValue()})
.toArray(Object[][]::new);
만약 당신이Object
s는String
그리고 필요한 것은String[][]
, 시험:
map.entrySet()
.stream()
.map(e -> new String[]{e.getKey(), e.getValue().toString()})
.toArray(String[][]::new);
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]);
}
}
1차원 어레이를 도입하려면
String[] arr1 = new String[hashmap.size()];
String[] arr2 = new String[hashmap.size()];
Set entries = hashmap.entrySet();
Iterator entriesIterator = entries.iterator();
int i = 0;
while(entriesIterator.hasNext()){
Map.Entry mapping = (Map.Entry) entriesIterator.next();
arr1[i] = mapping.getKey().toString();
arr2[i] = mapping.getValue().toString();
i++;
}
2개의 Dimension Array에 접속하려면
String[][] arr = new String[hashmap.size()][2];
Set entries = hashmap.entrySet();
Iterator entriesIterator = entries.iterator();
int i = 0;
while(entriesIterator.hasNext()){
Map.Entry mapping = (Map.Entry) entriesIterator.next();
arr[i][0] = mapping.getKey().toString();
arr[i][1] = mapping.getValue().toString();
i++;
}
키와 값이 문자열이고 동일한 배열에서 키와 값을 대체하려는 경우:
String[] result = myMap.entrySet()
.stream()
.flatMap(entry -> Stream.of(entry.getKey(),entry.getValue()))
.toArray(String[]::new);
// result = {key_1, value_1, key_2, value_2 ...}
이것도 드셔보세요.
public static String[][] getArrayFromHash(Hashtable<String,String> data){
String[][] str = null;
{
Object[] keys = data.keySet().toArray();
Object[] values = data.values().toArray();
str = new String[keys.length][values.length];
for(int i=0;i<keys.length;i++) {
str[0][i] = (String)keys[i];
str[1][i] = (String)values[i];
}
}
return str;
}
여기서는 String을 리턴 타입으로 사용하고 있습니다.본인이 필요한 반품 타입으로 변경할 수 있습니다.
@SuppressWarnings("unchecked")
public static <E,T> E[] hashMapKeysToArray(HashMap<E,T> map)
{
int s;
if(map == null || (s = map.size())<1)
return null;
E[] temp;
E typeHelper;
try
{
Iterator<Entry<E, T>> iterator = map.entrySet().iterator();
Entry<E, T> iK = iterator.next();
typeHelper = iK.getKey();
Object o = Array.newInstance(typeHelper.getClass(), s);
temp = (E[]) o;
int index = 0;
for (Map.Entry<E,T> mapEntry : map.entrySet())
{
temp[index++] = mapEntry.getKey();
}
}
catch (Exception e)
{
return null;
}
return temp;
}
//--------------------------------------------------------
@SuppressWarnings("unchecked")
public static <E,T> T[] hashMapValuesToArray(HashMap<E,T> map)
{
int s;
if(map == null || (s = map.size())<1)
return null;
T[] temp;
T typeHelper;
try
{
Iterator<Entry<E, T>> iterator = map.entrySet().iterator();
Entry<E, T> iK = iterator.next();
typeHelper = iK.getValue();
Object o = Array.newInstance(typeHelper.getClass(), s);
temp = (T[]) o;
int index = 0;
for (Map.Entry<E,T> mapEntry : map.entrySet())
{
temp[index++] = mapEntry.getValue();
}
}
catch (Exception e)
{return null;}
return temp;
}
HashMap<String, String> hashMap = new HashMap<>();
String[] stringValues= new String[hashMap.values().size()];
hashMap.values().toArray(stringValues);
개체 배열에 값을 전달해야 하는 경우 다음을 수행하십시오.
Array:
Object[] object= hashMap.values().toArray(new Object[0]);
Arraylist:
ArrayList<Object> object=new ArrayList<>(hashMap.values());
언급URL : https://stackoverflow.com/questions/1090556/java-how-to-convert-hashmapstring-object-to-array
'source' 카테고리의 다른 글
MariaDB는 그룹화 시 SELECT 문의 기능 의존성을 지원하지 않습니까? (0) | 2022.10.23 |
---|---|
요구 페이로드 취득 방법 (0) | 2022.10.23 |
Python 요청에서 보안 인증서 검사를 비활성화하려면 어떻게 해야 합니까? (0) | 2022.10.23 |
ReadableStream 개체에서 데이터를 검색하시겠습니까? (0) | 2022.10.23 |
python 내에서 명령줄 프로그램 실행 (0) | 2022.10.23 |