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

Groovy中如何将LinkedHashMap$Entry的ArrayList转回LinkedHashMap?

解决Groovy中Entry列表转回LinkedHashMap的问题

嘿,这个场景我太熟了!咱们直接来搞定这个转换,其实Groovy给咱们提供了非常简洁的方法~

先再明确下你的场景:

你初始创建的LinkedHashMap:

def person = [fname: "John", sname: "Wood", age: 23, job: "developer"]

切片后得到的Entry类型ArrayList:

def personChanged = person.entrySet().toList()[(1..-1)]

目标是把这个ArrayList转回LinkedHashMap,保持原有顺序,得到[sname: "Wood", age: 23, job: "developer"]。

方法一:用collectEntries直接指定返回类型(推荐)

Groovy的collectEntries方法可以直接把Entry集合转换成Map,而且咱们可以指定返回的Map类型为LinkedHashMap,完美保留原有的顺序:

def convertedLinkedMap = personChanged.collectEntries(new LinkedHashMap<>()) { it }

这里的逻辑很清晰:

  • 第一个参数new LinkedHashMap<>()告诉collectEntries要把结果放进这个LinkedHashMap实例里
  • 闭包{ it }直接返回每个Entry对象,collectEntries会自动提取每个Entry的key和value完成映射

方法二:基础遍历法(适合理解原理)

如果你想更直观地看到转换过程,也可以手动遍历Entry列表,逐个放入新的LinkedHashMap中:

def convertedLinkedMap = new LinkedHashMap()
personChanged.each { entry ->
    convertedLinkedMap[entry.key] = entry.value
}

这种写法虽然稍显繁琐,但能清晰看到每一步的映射过程,适合刚接触Groovy的朋友理解。

验证结果

不管用哪种方法,你都可以打印结果验证:

println convertedLinkedMap.getClass() // 输出 class java.util.LinkedHashMap
println convertedLinkedMap // 输出 [sname:Wood, age:23, job:developer]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:37:06