我相信有一种优雅/有趣的方式来做到这一点,
但我只能想到一个或多或少复杂的递归解决方案。
改写:
是否有任何标准的库(集合)方法或它们的简单组合来获取 第一个不同 列表的元素?
scala> val s = Seq(3, 5, 4, 1, 5, 7, 1, 2)
s: Seq[Int] = List(3, 5, 4, 1, 5, 7, 1, 2)
scala> s.takeWhileDistinct //Would return Seq(3,5,4,1), it should preserve the original order and ignore posterior occurrences of distinct values like 7 and 2.
最佳答案
如果你想让它快速,那么
{ val hs = scala.collection.mutable.HashSet[Int]()
s.takeWhile{ hs.add } }
会做的伎俩。 (额外的大括号可以防止泄漏临时值
hs
。)
关于scala - 如何获取列表的第一个不同(直到现在)元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21387833/