如何将Groovy中的Map数组合并为单个Map?
将Groovy中的Map列表合并为单个Map
你可以通过以下几种简洁的方式把documentList中的多个单键Map合并成一个统一的Map,这样就能使用containsKey方法检查键是否存在:
方法1:使用inject逐个合并
inject方法从空Map开始,逐个将列表中的小Map合并进去:
def combinedMap = documentList.inject([:]) { acc, map -> acc << map }
方法2:使用展开操作符快速合并
利用Groovy的集合操作符,直接把列表中的所有Map合并到新Map中:
def combinedMap = [:] << documentList
方法3:使用sum()简洁合并
Groovy对Map列表的sum()方法默认会执行合并操作,写法最简洁:
def combinedMap = documentList.sum()
完整示例代码
import groovy.json.JsonSlurper def a = '[{"a":"1234"},{"b":"5678"}]' def documentList = new JsonSlurper().parseText(a) // 任选一种方法合并Map def combinedMap = documentList.sum() // 验证containsKey功能 println combinedMap.containsKey("a") // 输出 true println combinedMap.containsKey("b") // 输出 true println combinedMap.containsKey("c") // 输出 false
合并后的Map结构就是你需要的["a":"1234","b":"5678"],完全支持containsKey等Map原生方法。
内容的提问来源于stack exchange,提问作者Cristian Baciu
相关产品推荐
相关产品推荐

