如何在Scala中对整数列表进行分组

时间:2017-09-12 07:46:47

标签: scala

我的列表如下

#Example line
#This is part of the parsed line
#Thats goes one
#End of line

我想将此列表分组到子列表中,如下所示

 List[Int] = List(50176482, 50176481, 50176485, 50176479, 50176478, 51176477, 51176483, 51176480)

 List1[Int] = List(50176482, 50176481, 50176485, 50176479, 50176478)

通过引用每个列表元素的两位数字(在这里它是50和51)。

2 个答案:

答案 0 :(得分:0)

只需使用列表中的过滤器检查列表中每个数字的前两位数字:

List(50176482, 50176481, 50176485, 50176479, 50176478)
List(51176477, 51176483, 51176480)

<强>输出:

{{1}}

Demo

答案 1 :(得分:0)

您可以使用groupBy

val x = List(50176482, 50176481, 50176485, 50176479, 50176478, 51176477, 51176483, 51176480)

x.groupBy(_.toString.take(2))

此处_.toString.take(2)用于制作群组。您可以使用任何返回2位数字的函数,即使没有转换为String。

结果:

res0: scala.collection.immutable.Map[String,List[Int]] = Map(51 -> List(51176477, 51176483, 51176480), 50 -> List(50176482, 50176481, 50176485, 50176479, 50176478))

如果您只想要列表,请使用.values

x.groupBy(_.toString.take(2)).values


res0: Iterable[List[Int]] = MapLike(List(51176477, 51176483, 51176480), List(50176482, 50176481, 50176485, 50176479, 50176478))