Scala:以不可变的方式列出唯一项目列表的向量列表

时间:2016-11-27 01:34:54

标签: scala list functional-programming immutability

我正在接收来自某些功能的矢量列表,例如

(List(Vector(1), Vector(1, 2), Vector(1, 3), Vector(1, 2, 4), Vector(1, 5)))

我想将其转换为明确的整数值,如

List(1,2,3,4,5)
在Scala中

使用完全不变性。

请建议实现目标的有效方法。

2 个答案:

答案 0 :(得分:5)

您可以使用flatten上的distinctList方法。

val list = List(Vector(1), 
                Vector(1, 2), 
                Vector(1, 3), 
                Vector(1, 2, 4), 
                Vector(1, 5))

val flattened = list.flatten // Gives List(1, 1, 2, 1, 3, 1, 2, 4, 1, 5)

val distinct = flattened.distinct // Gives List(1, 2, 3, 4, 5)

答案 1 :(得分:0)

这是替代解决方案。

val lst = (List(Vector(1), Vector(1, 2), Vector(1, 3), Vector(1, 2, 4), Vector(1, 5)))

lst.flatten.toSet.toList

List[Int] = List(5, 1, 2, 3, 4)