You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中存储多组键值对及遍历唯一店铺的方法咨询

Groovy 存储多组店铺-地址键值对及遍历方法

问题原因

你之前的代码每次都将mapAddress重新赋值为新的Map对象,直接覆盖了之前的记录;而且Groovy的Map并没有append方法,这行代码完全无效。要存储多组数据,需要用集合类型容纳多个Map,或者直接用店铺名作为键构建Map(更适合保证店铺唯一性)。

正确存储方式

方式1:用List存储多个店铺-地址Map

适合需要保留重复店铺记录的场景(若不需要重复,后续可去重):

// 初始化空列表
def storeAddresses = []
// 添加第一组数据
storeAddresses << [store: "abc", addr: "123 street"]
// 添加第二组数据
storeAddresses << [store: "xyz", addr: "north street"]

方式2:用店铺名作为键的Map(推荐,天然保证店铺唯一性)

如果店铺名是唯一标识,直接用店铺名作为Map的键、地址作为值,重复添加同一家店铺时会自动覆盖旧地址,契合你“唯一的店铺”需求:

// 初始化空Map
def storeAddressMap = [:]
// 添加店铺abc的地址
storeAddressMap["abc"] = "123 street"
// 添加店铺xyz的地址(也可用点语法,前提是店铺名是合法标识符)
storeAddressMap.xyz = "north street"

遍历唯一店铺的方法

针对List存储的情况

先提取所有店铺名并去重,再遍历:

// 获取所有唯一店铺名
def uniqueStores = storeAddresses.collect { it.store }.unique()
// 遍历每个唯一店铺
for (store in uniqueStores) {
    // 找到对应地址
    def address = storeAddresses.find { it.store == store }.addr
    println "店铺:${store},地址:${address}"
}

针对店铺名为键的Map的情况

遍历更直接,因为键本身就是唯一店铺名:

// 用for循环遍历
for (entry in storeAddressMap) {
    println "店铺:${entry.key},地址:${entry.value}"
}

// 或者用Groovy更简洁的each方法
storeAddressMap.each { store, addr ->
    println "店铺:${store},地址:${addr}"
}

内容的提问来源于stack exchange,提问作者user3092856

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:05:21