创建没有重复的列表的最佳方法?

时间:2017-07-11 15:39:49

标签: scala

我有一个HashMap,包含旧URI(键)到其替换URI(值)的映射。已合并了几个较旧的值,这意味着存在重复值。这是一个显示数据外观的小例子(显然不是真正的网站):

http://oldaddress1.com -> http://newaddress1.com
http://oldaddress2.com -> http://newaddress2.com
http://oldaddress3.com -> http://newaddress2.com

我需要以最有效的方式从地图中仅提取唯一的新地址,因为它是一个非常大的数据集。从上面的例子中,我需要生成一个具有以下值的列表:

list(0) = http://newaddress1.com
list(1) = http://newaddress2.com

我的第一个想法是使用 ArrayBuffer 的包含方法,如下所示:

if (!(list contains newAddress)) list += newAddress

但是我发现这可能涉及多次扫描大量数据,除非该方法有更有效的方法来检查重复,而不是扫描整个列表。

我也知道我可以轻松地使用地图,但是为了达到我想要的目的,将它放在列表中会更容易。

1 个答案:

答案 0 :(得分:5)

最有效的方法是使用Set[String]

val map = Map("hello" -> "world", "again" -> "world")
val res: Set[String] = map.values.toSet

收率:

res: Set[String] = Set(world)

一般来说,我会参考Wikipedia value about set来阅读它的属性和应用程序。