2014-04-01 73 views
0

我有一個非常大的集合,其中包含超過一百萬字符串元素。經常要檢查即將到來的字符串是否在此集合中。我不知道哪個是更快之間的斯卡拉list.contains()和set.contains()之間

我想知道哪個集合最好用,列表集合?爲什麼?

+1

我認爲這是基本的數據結構問題。你可以使用一個'Set'或一個布隆過濾器(如果你沒有錯誤的話)。你也可以在這裏找到性能特徵(http://docs.scala-lang.org/overviews/collections/performance-characteristics.html)。 –

回答

6

會更快速,因爲它可以基於樹狀結構(複雜性將會像O(樹的高度)或使用散列(複雜性將接近O(常量)) ,對其他尺寸包含名單將有複雜爲O(n),其中ñ - 列表的大小

所以設置應該會更快,當我們談論的含有大量()的調用

+1

Thx。我發現在我的程序中'Set.contains()'比'List.contains()'快了30倍。可怕。 – Dzanvu

+1

除非你的設置是'ListSet',在這種情況下,性能將是相同的。 –

+0

@ConnorDoyle,同意。只是不知道這個奇怪的集合:) – Mysterion

相關問題