![](/img/trans.png)
[英]How to group VALUES of same KEY of map in a List<Map<String,String>> in JAVA?
[英]How to create a map having multiple values mapped to same key out of List<Map<String,Object>?
我在地圖列表中提取了一個數據,該列表具有與同一鍵關聯的多個值。 現在,我需要從dbvalues(這是一個地圖列表)中提取鍵值對,然后將其放入Map>中。但是,我將如何從地圖列表中提取數據以便放入該地圖中?
List<Map<String, Object>> dbvalues = new ArrayList<Map<String, Object>>();
dbvalues = JdbcTemplate.queryForList(sql_query);
Map<String, List<String>> test = new HashMap<String, List<String>>();
expected resulting Map -
key1 - x,y,z
key2 - a,b,c...and so on
您可以遍歷Map<String, List<String>>
的.entrySet()
,打印每個鍵,然后將值( List<String>
)與,
Map<String, List<String>> test = new HashMap<>();
// Fill with sample data
test.put("key1", Arrays.asList("x", "y", "z"));
test.put("key2", Arrays.asList("a", "b", "c"));
// Print the contents
for (Entry<String, List<String>> e : test.entrySet()) {
System.out.println(e.getKey() + " - " + String.join(",", e.getValue()));
}
// This prints:
// key1 - x,y,z
// key2 - a,b,c
您可以使用番石榴的com.google.common.collect.ListMultimap
來自com.google.common.collect.Multimap的javadoc:
它是一個將鍵映射到值的集合,類似於java.util.Map,但是其中每個鍵都可以與多個值關聯。 您可以將多圖的內容可視化為從鍵到非空值集合的圖。
創建Multimap的最直接的方法是使用MultimapBuilder,它使您可以配置應該如何表示鍵和值。 例如:
// creates a ListMultimap wich will behave like an Map<String,ArrayList<Object>>
ListMultimap<String, Object> listMultimap = MultimapBuilder.hashKeys().arrayListValues().build();
一旦有了多圖,就可以將鍵值對放入for循環中:
for(final Map<String,Object> map : dbvalues){
for(final Entry<String,Object> entry : map.entrySet()){
listMultimap.put( entry.getKey(), entry.getValue() );
}
}
有關多圖的更多信息,請訪問: https : //github.com/google/guava/wiki/NewCollectionTypesExplained#multimap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.