Haskell程式將陣列轉換為集合(HashSet)


在 Haskell 中,我們將透過使用 fromList、nub 和 foldr 函式將陣列轉換為集合 (HashSet)。在第一個示例中,我們將使用 (let set = Set.fromList arr),在第二個示例中,我們將使用 (let set = nub arr)。在第三個示例中,我們將使用 (let set = foldr Set.insert Set.empty arr)。

演算法

  • 步驟 1 - 匯入 Data.Set 模組以處理集合。

  • 步驟 2 - 程式執行將從 main 函式開始。main() 函式控制整個程式。它寫成 main = do。

  • 步驟 3 - 使用一些值初始化陣列。

  • 步驟 4 - 使用 fromList 函式將陣列轉換為集合,並初始化名為“set”的集合,如下所示:

    let set = Set.fromList arr.

  • 步驟 5 - 使用 print 函式將結果集合列印到控制檯。

示例 1

在此示例中,我們首先匯入 Data.Set 模組,該模組提供基於平衡二叉樹的集合實現。然後,我們定義一個名為 arr 的陣列,其中包含一些元素,包括重複元素。然後,我們使用 Set 模組的 fromList 函式從陣列中的元素建立一個名為 set 的集合。最後,我們使用 print 函式列印集合。

import qualified Data.Set as Set

main :: IO ()
main = do
   let arr = [1, 2, 3, 2, 1, 4]
   let set = Set.fromList arr
   print set

輸出

fromList [1,2,3,4]

示例 2

在此示例中,我們首先匯入 Data.List 模組,該模組提供各種列表操作函式。然後,我們定義一個名為 arr 的陣列,其中包含一些元素,包括重複元素。然後,我們使用 Data.List 模組中的 nub 函式從陣列中刪除重複元素並建立一個名為 set 的新列表。最後,我們使用 print 函式列印列表。

import Data.List (nub)

main :: IO ()
main = do
   let arr = [1, 2, 3, 2, 1, 4]
   let set = nub arr
   print set

輸出

[1,2,3,4]

示例 3

在此示例中,我們首先匯入 Data.Set 模組,該模組提供基於平衡二叉樹的集合實現。然後,我們定義一個名為 arr 的陣列,其中包含一些元素,包括重複元素。然後,我們使用 foldr 函式將陣列的每個元素插入一個新的集合中,從一個空集合開始。insert 函式將元素插入集合,empty 函式建立空集合。最後,我們使用 print 函式列印集合。

import qualified Data.Set as Set

main :: IO ()
main = do
   let arr = [1, 2, 3, 2, 1, 4]
   let set = foldr Set.insert Set.empty arr
   print set

輸出

fromList [1,2,3,4]

結論

在 Haskell 中,陣列是相同型別元素的集合,由整數索引。集合是不同元素的集合,可用於有效地檢查成員資格和刪除重複項。HashSet 是一種特定型別的集合,它使用雜湊函式將元素對映到儲存桶陣列,在許多情況下允許常數時間訪問元素。將陣列轉換為集合 (HashSet) 涉及從陣列中刪除重複項並將每個唯一元素新增到新集合中。在 Haskell 中,有多種方法可以執行此轉換,具體取決於所需的實現和需求。

更新於:2023年4月25日

164 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.