Clojure - Map



Map 是一种将键映射到值的集合。提供了两种不同的 map 类型 - 哈希和排序。HashMaps 需要正确支持 hashCode 和 equals 的键。SortedMaps 需要实现 Comparable 的键,或 Comparator 的实例。

Map 可以通过两种方式创建,第一种是通过 hash-map 方法。

创建 - HashMaps

HashMaps 具有典型的键值关系,并且是通过使用 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}

创建 - SortedMaps

SortedMaps 具有根据键元素对元素进行排序的独特特性。以下是一个示例,展示了如何使用 sorted-map 函数创建排序的 map。

(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}

从上面的程序中,您可以清楚地看到 map 中的元素是根据键值排序的。以下是 map 可用的方法。

序号 Map & 描述
1 get

返回映射到键的值,如果键不存在则返回 not-found 或 nil。

2 contains?

查看 map 是否包含所需的键。

3 find

返回键的 map 条目。

4 keys

返回 map 中的键列表。

5 vals

返回 map 中的值列表。

6 dissoc

从 map 中分离键值条目。

7 merge

将两个 map 条目合并为一个 map 条目。

8 merge-with

返回一个 map,该 map 由其余 map 连接到第一个 map 上组成。

9 select-keys

返回一个 map,该 map 仅包含 map 中那些键在 keys 中的条目。

10 rename-keys

将当前 HashMap 中的键重命名为新定义的键。

11 map-invert

反转 map,以便值成为键,反之亦然。

广告