简体   繁体   English

Scala:在Seq of Seqs中查找唯一的Seqs

[英]Scala: find unique Seqs in Seq of Seqs

Its hard for me to even put into words what I mean to ask, so let me give an example. 我什至很难说出我想问的话,所以让我举一个例子。

I have a Seq like so, where Occurrence is a case class: 我有一个这样的Seq ,其中Occurrence是一个case类:

Seq(
  Seq(Occurrence1, Occurrence2, Occurrence3), 
  Seq(Occurrence2, Occurrence3, Occurrence1),
  Seq(Occurrence4),
  Seq(Occurrence5, Occurrence6),
  Seq(Occurrence6, Occurrence5)
)

Which I am trying to condense to look like: 我想让它看起来像这样:

Seq(
  Seq(Occurrence1, Occurrence2, Occurrence3),
  Seq(Occurence4),
  Seq(Occurrence5, Occurrence6)
)

Is there a collections API that allows me to do this? 是否有允许我执行此操作的collections API? I'd like to sort the items within that Seq 我想对那个序列中的项目进行排序

  • You sort the elements in list 您对列表中的元素进行排序
  • and convert the list to Set as set contains only the distinct elements. 并将列表转换为Set as set,仅包含不同的元素。

Example, 例,

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)))
  • you can also distinct instead of .toSet.toSeq , 您还可以distinct .toSet.toSeq而不是

Example, 例,

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)))

Somehow related question - How in Scala to find unique items in List 与某种方式相关的问题- 如何在Scala中找到列表中的唯一项

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM