scala从集合中提取不重复的元素
生活随笔
收集整理的這篇文章主要介紹了
scala从集合中提取不重复的元素
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Problem
????你有一個集合,內(nèi)部有很多重復(fù)元素,你想要把這些重復(fù)的元素只保留一份。
Solution
????使用Distinct方法:
scala>?val?x?=?Vector(1,?1,?2,?3,?3,?4) x:?scala.collection.immutable.Vector[Int]?=?Vector(1,?1,?2,?3,?3,?4)scala>?val?y?=?x.distinct y:?scala.collection.immutable.Vector[Int]?=?Vector(1,?2,?3,?4)????這個distinct方法返回一個新的集合,重復(fù)元素只保留一份。記得使用一個新的變量來指向這個新的集合,無論你使用的是mutable集合還是immutable集合。
????如果你突然需要一個set,那么直接吧你的集合轉(zhuǎn)化成為一個set也是去掉重復(fù)元素的方式:
????因為Set對于一樣的元素只能保存一份,所以把Array,List,Vector或者其他的集合轉(zhuǎn)化成Set可以去掉重復(fù)元素。實際上這就是distinct方法的工作遠離。Distinct方法的源代碼顯示了他就是實用了一個mutable.HashSet的實例。
Using distinct with your own classes
????要想對你自己定義的集合元素類型使用distinct方法,你需要實現(xiàn)equals和hashCode方法。舉個例子,下面這個類就可以使用disticnt方法,因為我們實現(xiàn)了這兩個方法:
????接下來我們定義幾個Person對象的實例,并測試distinct方法:
scala>?val?dale1?=?new?Person("Dale",?"Cooper") dale1:?Person?=?Dale?Cooperscala>?val?dale2?=?new?Person("Dale",?"Cooper") dale2:?Person?=?Dale?Cooperscala>?val?ed?=?new?Person("Ed",?"Hurley") ed:?Person?=?Ed?Hurleyscala>?val?list?=?List(dale1,?dale2,?ed) list:?List[Person]?=?List(Dale?Cooper,?Dale?Cooper,?Ed?Hurley)scala>?val?uniques?=?list.distinct uniques:?List[Person]?=?List(Dale?Cooper,?Ed?Hurley)總結(jié)
以上是生活随笔為你收集整理的scala从集合中提取不重复的元素的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea将maven项目打包成war包的
- 下一篇: scala使用zip合并两个集合为二元组