Clojure - Map 映射
Map 是将键映射到值的集合。 提供了两种不同的映射类型 - 散列映射和排序映射。 HashMap 需要正确支持 hashCode 和 equals 的键。 SortedMaps 需要实现 Comparable 的键或 Comparator 的实例。
可以通过两种方式创建映射,第一种是通过哈希映射方法。
创建 - HashMap
HashMap 具有典型的键值关系,是使用 hash-map 函数创建的。
(ns clojure.examples.example (:gen-class)) (defn example [] (def demokeys (hash-map "z" "1" "b" "2" "a" "3")) (println demokeys)) (example)
输出
上面的代码产生以下输出。
{z 1, b 2, a 3}
Creation - SortedMaps
SortedMap 具有根据键元素对其元素进行排序的独特特征。 以下示例展示了如何使用排序映射函数创建排序映射。
(ns clojure.examples.example (:gen-class)) (defn example [] (def demokeys (sorted-map "z" "1" "b" "2" "a" "3")) (println demokeys)) (example)
上面的代码产生以下输出。
{a 3, b 2, z 1}
从上面的程序中,您可以清楚地看到映射中的元素是根据键值排序的。 以下是可用于映射的方法。
序号 | 映射和说明 |
---|---|
1 | get
返回映射到键的值,未找到,如果键不存在则返回 nil。 |
2 | contains?
查看映射是否包含所需的密钥。 |
3 | find
返回键的映射条目。 |
4 | keys
返回映射中的键列表。 |
5 | vals
返回映射中的值列表。 |
6 | dissoc
将键值条目与映射解除关联。 |
7 | merge
将两个映射条目合并为一个映射条目。 |
8 | merge-with
返回一个映射,其中包含与第一个映射相结合的其余映射。 |
9 | select-keys
返回一个映射,仅包含映射中键为键的条目。 |
10 | rename-keys
将当前 HashMap 中的键重命名为新定义的键。 |
11 | map-invert
反转映射,使值成为键,反之亦然。 |