Scala常见操作总结

Scala常见操作总结

文章目录

1. groupBy

groupBy方法定义

1
def groupBy [K] (f: (A) ⇒ K): Map[K, Traversable[A]]

(1)案例1

1
2
3
val birds = List("Golden Eagle", "Gyrfalcon", "American Robin", "Mountain BlueBird", "Mountain-Hawk Eagle")
val groupedByFirstLetter = birds.groupBy(_.charAt(0))
println(groupedByFirstLetter)

输出

1
Map(M -> List(Mountain BlueBird, Mountain-Hawk Eagle), G -> List(Golden Eagle, Gyrfalcon), A -> List(American Robin))

(2)案例2

1
2
3
val cats = List("Tiger", "Lion", "Puma", "Leopard", "Jaguar", "Cheetah", "Bobcat")
val groupedByLength = cats.groupBy(_.length)
println(groupedByLength)

输出

1
Map(5 -> List(Tiger), 4 -> List(Lion, Puma), 7 -> List(Leopard, Cheetah), 6 -> List(Jaguar, Bobcat))

(3)案例3

1
2
3
4
5
6
7
val raptors = List("Golden Eagle", "Bald Eagle", "Prairie Falcon", "Peregrine Falcon", "Harpy Eagle", "Red Kite")
val kinds = raptors.groupBy {
case bird if bird.contains("Eagle") => "eagle"
case bird if bird.contains("Falcon") => "falcon"
case _ => "unknown"
}
println(kinds)

输出

1
Map(eagle -> List(Golden Eagle, Bald Eagle, Harpy Eagle), falcon -> List(Prairie Falcon, Peregrine Falcon), unknown -> List(Red Kite))

(4)案例4

1
2
3
val strList=List("aaa","bbb","ccc","bbb","ccc")
val results: Map[String, List[String]] = strList.groupBy(w => w)
println(results)

输出

1
Map(ccc -> List(ccc, ccc), bbb -> List(bbb, bbb), aaa -> List(aaa))

(5)案例5

1
2
3
val words = List("one", "two", "one", "three", "four", "two", "one")
val counts = words.groupBy(w => w).mapValues(_.size)
println(counts)

输出

1
Map(one -> 3, three -> 1, four -> 1, two -> 2)

(6)案例6

1
2
3
4
val numbers = List(1,4,5,1,6,5,2,8,1,9,2,1)
//map 每个元素返回(x._1, x._2.length)
val results: Map[Int, Int] = numbers.groupBy(x => x).map { x => (x._1, x._2.length) }
println(results)

输出

1
Map(5 -> 2, 1 -> 4, 6 -> 1, 9 -> 1, 2 -> 2, 8 -> 1, 4 -> 1)