2 回答

TA貢獻1836條經驗 獲得超3個贊
而不是使用 HashMap 使用 Multimap。并基于鍵獲取 Collection 對象中的值。然后從每個 Collection 在所有列表中添加一個值。
Multimap myList = ArrayListMultimap.create();
myList.put("key","value1");
myList.put("key","value2");
myList.put("key","value3");
myList.put("key","value4");
myList.put("key1","value5");
myList.put("key1","value6");
myList.put("key1","value7");
myList.put("key1","value8");
myList.put("key2","value9");
myList.put("key2","value10");
myList.put("key2","value11");
myList.put("key2","value12");
myList.put("key3","value13");
myList.put("key3","value14");
myList.put("key3","value15");
myList.put("key3","value16");
然后從列表中獲取所有密鑰
Set myKeySet = myList.keySet();
Object[] keys = myKeySet.toArray();
現在您已經設置了所有密鑰。然后
HashMap<String, String> listHashMap1 = new HashMap<>();
HashMap<String, String> listHashMap2 = new HashMap<>();
HashMap<String, String> listHashMap3 = new HashMap<>();
HashMap<String, String> listHashMap4 = new HashMap<>();
現在將值添加到每個列表
for(int i=0;i<4;i++){
List<String> keyval = (List)myList.get((String)keys[i]);
listHashMap1.put((String)keys[i],keyval.get(0));
listHashMap2.put((String)keys[i],keyval.get(1));
listHashMap3.put((String)keys[i],keyval.get(2));
listHashMap4.put((String)keys[i],keyval.get(3));
}
現在您已經設置了四行列表。這個 Multimap 使用的是谷歌番石榴。所以你需要在你的 gradle 中實現番石榴,如下所示: implementation 'com.google.guava:guava:26.0-jre'

TA貢獻1785條經驗 獲得超8個贊
從您提供的代碼看來,源hashMap的類型是Map<String, String[]>。
您可以遍歷地圖的條目,并為每個條目將四個值存儲在不同的結果容器中。由于您指出結果容器也應該是地圖:
Map<String, String> one = new HashMap<>();
Map<String, String> two = new HashMap<>();
Map<String, String> three = new HashMap<>();
Map<String, String> four = new HashMap<>();
hashMap.entrySet().forEach(entry -> {
String[] values = entry.getValue();
one.put(entry.getKey(), values[0]);
two.put(entry.getKey(), values[1]);
three.put(entry.getKey(), values[2]);
four.put(entry.getKey(), values[3]);
});
注意:假設每個鍵總是正好有四個值。
添加回答
舉報