2017-07-11 9 views
1

私は、古いURI(キー)とその置換URI(値)のマッピングを含むHashMapを持っています。古い値のいくつかが結合されています。つまり、値が重複しています。ここでのデータは(明らかではない本物のウェブサイト)どのように見えるかを示す小さな例です:重複のないリストを作成する最も良い方法は?

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 

しかし、この方法では、リスト全体をスキャンするよりも重複をチェックする効率的な方法がない限り、多くのデータを何度もスキャンする必要があるかもしれません。

私はこのマップを簡単に使うこともできることを知っていますが、それをリストに入れようとするのは簡単です。

答えて

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を参照してくださいと思います。

+0

これは私が探していたものです。ありがとう! – hayfreed

関連する問題