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,以便值成為鍵,反之亦然。

廣告