scala - 如何获取列表的第一个不同(直到现在)元素?

标签 scala collections

我相信有一种优雅/有趣的方式来做到这一点,
但我只能想到一个或多或少复杂的递归解决方案。

改写:
是否有任何标准的库(集合)方法或它们的简单组合来获取 第一个不同 列表的元素?

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/

相关文章:

java - 如何使用 Java 迭代 ArrayList 值?

c# - 单词集合的最佳数据结构是什么?

方法参数中的 Scala 映射无法添加键值

json - 如何将由 String 和 Seq[String] 值组成的 Scala Map 转换为 JSON?

scala - 方法返回类型协方差

java - 玩!集合(即集合或列表)字段中的 Morphia 查询

java - 对象代替界面?

Scala Stdin.readLine() 似乎没有按预期工作

scala - Scala 2.8 中是否有 do-until(后置条件)循环?

java - 从集合中获取第一个(也是唯一的值)