並行集合

並行集合轉換

語言

在循序和並行集合之間轉換

每個循序集合都可以使用 par 方法轉換成它的並行變體。某些循序集合有直接的並行對應。對於這些集合,轉換是有效的,它會在常數時間內發生,因為循序和並行集合具有相同的資料結構表示(一個例外是可變動態陣列和雜湊集,在第一次呼叫 par 時轉換的成本稍高,但後續呼叫 par 則會花費常數時間)。需要注意的是,對於可變動集合,如果循序集合和並行集合共用基礎資料結構,則循序集合中的變更會在並行集合中可見。

順序 平行
可變  
陣列 平行陣列
雜湊映射 平行雜湊映射
雜湊集合 平行雜湊集合
字典樹映射 平行字典樹映射
不可變  
向量 平行向量
範圍 平行範圍
雜湊映射 平行雜湊映射
雜湊集合 平行雜湊集合

其他集合,例如清單、佇列或串流,在概念上是順序的,因為必須一個接一個地存取元素。這些集合會透過將元素複製到類似的平行集合中來轉換為平行變體。例如,函式清單會轉換為標準不可變平行序列,也就是平行向量。

每個平行集合都可以使用 seq 方法轉換為順序變體。將平行集合轉換為順序集合總是有效的,而且只需要常數時間。對可變平行集合呼叫 seq 會產生一個順序集合,該集合由相同的儲存體支援,因此對一個集合的更新將會反映在另一個集合中。

在不同集合類型之間轉換

除了在順序和並行集合之間轉換之外,集合也可以在不同的集合類型之間轉換。例如,呼叫 toSeq 會將順序集合轉換成順序序列,呼叫並行集合上的 toSeq 會將其轉換成並行序列。一般的規則是,如果 X 有並行版本,則 toX 方法會將集合轉換成 ParX 集合。

以下是所有轉換方法的摘要

方法 傳回類型
toArray 陣列
toList List
toIndexedSeq IndexedSeq
toStream Stream
toIterator Iterator
toBuffer Buffer
toTraversable GenTraversable
toIterable ParIterable
toSeq ParSeq
toSet ParSet
toMap ParMap

此頁面的貢獻者