Scala:在Seq of Seq中查找唯一的Seq
我甚至很难用语言表达我想问的问题,所以让我举个例子 我有一个类似这样的Scala:在Seq of Seq中查找唯一的Seq,scala,collections,Scala,Collections,我甚至很难用语言表达我想问的问题,所以让我举个例子 我有一个类似这样的Seq,其中事件是一个案例类: Seq( Seq(Occurrence1, Occurrence2, Occurrence3), Seq(Occurrence2, Occurrence3, Occurrence1), Seq(Occurrence4), Seq(Occurrence5, Occurrence6), Seq(Occurrence6, Occurrence5) ) 我想把它浓缩成这样: Se
Seq
,其中事件
是一个案例类:
Seq(
Seq(Occurrence1, Occurrence2, Occurrence3),
Seq(Occurrence2, Occurrence3, Occurrence1),
Seq(Occurrence4),
Seq(Occurrence5, Occurrence6),
Seq(Occurrence6, Occurrence5)
)
我想把它浓缩成这样:
Seq(
Seq(Occurrence1, Occurrence2, Occurrence3),
Seq(Occurence4),
Seq(Occurrence5, Occurrence6)
)
是否有允许我这样做的集合API?我想对该序列中的项目进行排序
Set
,因为Set只包含不同的元素final case class Occurance(times: Int)
val Occurrence1 = Occurance(times = 1)
val Occurrence2 = Occurance(times = 2)
val Occurrence3 = Occurance(times = 3)
val Occurrence4 = Occurance(times = 4)
val Occurrence5 = Occurance(times = 5)
val Occurrence6 = Occurance(times = 6)
val data = Seq(
Seq(Occurrence1, Occurrence2, Occurrence3),
Seq(Occurrence2, Occurrence3, Occurrence1),
Seq(Occurrence4),
Seq(Occurrence5, Occurrence6),
Seq(Occurrence6, Occurrence5)
)
data.map(_.sortBy {_.times}).toSet.toSeq
//res0: Seq[Seq[Occurance]] = Vector(List(Occurance(1), Occurance(2), Occurance(3)), List(Occurance(4)), List(Occurance(5), Occurance(6)))
data.map(_.sortBy{_.times}).distinct
//res1: Seq[Seq[Occurance]] = List(List(Occurance(1), Occurance(2), Occurance(3)), List(Occurance(4)), List(Occurance(5), Occurance(6)))
- 您也可以
不重复
,而不是
,.toSet.toSeq
final case class Occurance(times: Int)
val Occurrence1 = Occurance(times = 1)
val Occurrence2 = Occurance(times = 2)
val Occurrence3 = Occurance(times = 3)
val Occurrence4 = Occurance(times = 4)
val Occurrence5 = Occurance(times = 5)
val Occurrence6 = Occurance(times = 6)
val data = Seq(
Seq(Occurrence1, Occurrence2, Occurrence3),
Seq(Occurrence2, Occurrence3, Occurrence1),
Seq(Occurrence4),
Seq(Occurrence5, Occurrence6),
Seq(Occurrence6, Occurrence5)
)
data.map(_.sortBy {_.times}).toSet.toSeq
//res0: Seq[Seq[Occurance]] = Vector(List(Occurance(1), Occurance(2), Occurance(3)), List(Occurance(4)), List(Occurance(5), Occurance(6)))
data.map(_.sortBy{_.times}).distinct
//res1: Seq[Seq[Occurance]] = List(List(Occurance(1), Occurance(2), Occurance(3)), List(Occurance(4)), List(Occurance(5), Occurance(6)))
相关问题-- 您可以对列表中的元素进行排序
- 并将列表转换为
,因为Set只包含不同的元素Set
final case class Occurance(times: Int)
val Occurrence1 = Occurance(times = 1)
val Occurrence2 = Occurance(times = 2)
val Occurrence3 = Occurance(times = 3)
val Occurrence4 = Occurance(times = 4)
val Occurrence5 = Occurance(times = 5)
val Occurrence6 = Occurance(times = 6)
val data = Seq(
Seq(Occurrence1, Occurrence2, Occurrence3),
Seq(Occurrence2, Occurrence3, Occurrence1),
Seq(Occurrence4),
Seq(Occurrence5, Occurrence6),
Seq(Occurrence6, Occurrence5)
)
data.map(_.sortBy {_.times}).toSet.toSeq
//res0: Seq[Seq[Occurance]] = Vector(List(Occurance(1), Occurance(2), Occurance(3)), List(Occurance(4)), List(Occurance(5), Occurance(6)))
data.map(_.sortBy{_.times}).distinct
//res1: Seq[Seq[Occurance]] = List(List(Occurance(1), Occurance(2), Occurance(3)), List(Occurance(4)), List(Occurance(5), Occurance(6)))
- 您也可以
不重复
,而不是
,.toSet.toSeq
final case class Occurance(times: Int)
val Occurrence1 = Occurance(times = 1)
val Occurrence2 = Occurance(times = 2)
val Occurrence3 = Occurance(times = 3)
val Occurrence4 = Occurance(times = 4)
val Occurrence5 = Occurance(times = 5)
val Occurrence6 = Occurance(times = 6)
val data = Seq(
Seq(Occurrence1, Occurrence2, Occurrence3),
Seq(Occurrence2, Occurrence3, Occurrence1),
Seq(Occurrence4),
Seq(Occurrence5, Occurrence6),
Seq(Occurrence6, Occurrence5)
)
data.map(_.sortBy {_.times}).toSet.toSeq
//res0: Seq[Seq[Occurance]] = Vector(List(Occurance(1), Occurance(2), Occurance(3)), List(Occurance(4)), List(Occurance(5), Occurance(6)))
data.map(_.sortBy{_.times}).distinct
//res1: Seq[Seq[Occurance]] = List(List(Occurance(1), Occurance(2), Occurance(3)), List(Occurance(4)), List(Occurance(5), Occurance(6)))
不知何故相关的问题-很高兴能提供帮助,不过您可能需要找到排序功能。欢迎使用scala
data.map(u.toSet).toSet
应该足够了,我想我很乐意为您提供帮助,不过您可能需要找到排序函数。欢迎使用scaladata.map(u.toSet).toSet
应该足够了,我认为scala 2.13的可能副本添加了distinctBy
,这在这里非常有用。2.12及更早版本没有。有人系统地浏览了我的个人资料,并对我在Stackoverflow上提供的所有问题和答案进行了否决。管理员们似乎也很满足于让它发生。因此,我想请这篇文章的任何后续访问者真诚地投票,并留下评论,解释你为什么认为这篇文章有用或不有用。我并不是想沉溺于一些可悲的针锋相对,我只是想帮助下一个人。非常感谢。Scala 2.13的可能副本通过添加了distinctBy,这在这里非常有用。2.12及更早版本没有。有人系统地浏览了我的个人资料,并对我在Stackoverflow上提供的所有问题和答案进行了否决。管理员们似乎也很满足于让它发生。因此,我想请这篇文章的任何后续访问者真诚地投票,并留下评论,解释你为什么认为这篇文章有用或不有用。我并不是想沉溺于一些可悲的针锋相对,我只是想帮助下一个人。非常感谢。