现在的位置: 首页 > 综合 > 正文

Groovy 映射

2018年08月08日 ⁄ 综合 ⁄ 共 1036字 ⁄ 字号 评论关闭
 

除了丰富的列表处理功能,Groovy 还提供了坚固的映射机制。同列表一样,映射也是本地数据结构。而且 Groovy 中的任何映射机制在幕后都是 java.util.Map 的实例。

Java 语言中的映射

Java 语言中的映射是名称-值对的集合。所以,要用 Java 代码创建典型的映射,必须像下面这样操作:

Map<String, String>map = new HashMap<String, String>();
map.put("name", "Andy");
map.put("VPN-#","45");

一个 HashMap 实例容纳两个名称-值对,每一个都是 String 的实例。



通过 Groovy 进行映射

Groovy 使得处理映射的操作像处理列表一样简单 — 例如,可以用 Groovy 将上面的 Java 映射写成

def hash = [name:"Andy", "VPN-#":45]

请注意,Groovy 映射中的键不必是 String。在这个示例中,name 看起来像一个变量,但是在幕后,Groovy 会将它变成 String



全都是 Java

接下来创建一个新类 Mapper 并加入上面的代码。然后添加以下代码,以证实底层的代码是真正的 Java 代码:

assert hash.getClass() == java.util.LinkedHashMap

可以看到 Groovy 使用了 Java 的 LinkedHashMap 类型,这意味着可以使用标准的 Java 一样语句对 hash 中的项执行 putget 操作。

hash.put("id", 23)
assert hash.get("name") == "Andy"


有 groovy 特色的映射

现在您已经看到,Groovy 给任何语句都施加了魔法,所以可以用 . 符号将项放入映射中。如果想将新的名称-值对加入映射(例如 dob 和 “01/29/76”),可以像下面这样操作:

hash.dob = "01/29/76"

. 符号还可以用来获取项。例如,使用以下方法可以获取 dob 的值:

assert hash.dob == "01/29/76"

当然 . 要比调用 get() 方法更具 Groovy 特色。



位置映射

还可以使用假的位置语法将项放入映射,或者从映射获取项目,如下所示:

assert hash["name"] == "Andy"
hash["gender"] = "male"
assert hash.gender == "male"
assert hash["gender"] == "male"

但是,请注意,在使用 [] 语法从映射获取项时,必须将项作为 String 引用。

抱歉!评论已关闭.