Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更加有助于我们学习Scala和Spark:
List,Map,Set的一些api的用法如下:
- def collectionTest(): Unit ={
-
- val map =Map("red"->"红色","green"->"绿色")
- val colors = List("red", "green", "blue")
-
- val size=colors.map( (f:String) => f.size );
- val data=List(1,2,5,3);
-
- val r=data.reduce((a:Int,b:Int)=>a+b);
- println(size," ",r)
-
- println(map("red"))
-
- println(map.contains("white"))
-
- for(pair<-map) println(pair)
-
-
- println(List(3,2,3,4,5).distinct)
-
- println(List(3,12,33,64,15).filter(_ > 18))
-
- println(List(List(1, 2), List(3, 4)).flatten)
-
- println(List(1, 2, 3, 4, 5) partition (_ < 3))
-
- println(List(1, 2, 3).reverse)
-
- println(List(2, 3, 5, 7) slice (1, 4))
-
- println(List("apple", "to","a","ab") sortBy (_.size) )
-
- println(List("apple", "to","bag","bbc","one").sorted)
-
- println(List(2, 3, 5, 7,99,45) splitAt 3)
-
- println(List(2, 3, 5, 7, 11, 13) take 2)
-
- println(List(1, 2) zip List("a", "b") )
-
- println(List(‘a‘, ‘b‘, ‘c‘, ‘d‘) drop 1)
-
- println(List(1, 2) == List(1, 2))
-
- println(List(1, 2) ++ Set(3, 4, 3) )
-
- println(List(1, 2) ::: List(2, 3))
-
- println(1 :: 2 :: Nil)
-
- println(List(1,6).:+(5))
-
- println(List(0, 1, 0) collect {case 1 => "ok"})
-
- println(List("milk,tea") flatMap (_.split(‘,‘)))
-
- println(List(41, 59, 26).max)
-
- println(List(10.9, 32.5, 4.23, 5.67).min)
-
- println(List(5, 6, 10).product)
-
- println(List(11.3, 23.5, 7.2).sum )
-
- println(List(34, 29, 18) contains 29 )
-
- println(List(0, 4, 3) endsWith List(4, 3))
-
- println(List(0, 4, 3) startsWith List(0) )
-
- println(List(24, 17, 32) exists (_ < 18))
- println("=======================================")
-
- println(List(5, 17, 2) forall (_ < 18) )
-
- println(List(4, 5, 6).fold(8)(_ + _))
-
- println(List(4, 5, 6).foldLeft(10)(_ + _))
-
- println(List(4, 5, 6).foldRight(0)(_ + _) )
-
- println(List(4, 5, 6).reduce(_ + _) )
-
- println(List(4, 5, 6).reduceLeft(_ + _) )
-
- println(List(4, 5, 6).reduceRight(_ + _) )
-
- println(List(4, 5, 6).scan(0)(_ + _))
-
- println(List(4, 5, 6).scanLeft(0)(_ + _))
-
- println(List(4, 5, 6).scanRight(0)(_ + _))
-
- println(List(24, 99, 104).mkString(", "))
-
- println(List(‘f‘, ‘t‘).toBuffer)
-
- println(Map("a" -> 1, "b" -> 2).toList )
-
- println(Set(1 -> true, 3 -> true).toMap)
-
- println(List(2, 5, 5, 3, 2).toSet)
-
- println(List(2, 5, 5, 3, 2).toString)
-
-
-
- import collection.JavaConverters._
- import collection.JavaConversions._
- import java.util.ArrayList;
-
- val ja =List(1,5,3).asJava
- println(List(1,5,3))
- println(ja)
-
- val s =new java.util.ArrayList(3).asScala;
-
-
-
- val statuses = List(500, 404)
-
- val msg = statuses.head match {
- case x if x < 500 => "okay"
- case _ => "whoah, an error"
- }
-
- println("信息:",msg)
- val msg2 = statuses match {
- case x if x contains(500) => "has error"
- case _ => "okay"
- }
- println("信息:",msg2)
-
- val msg3 = statuses match {
- case List(404, 500) => "not found & error"
- case List(500, 404) => "error & not found"
- case List(200, 200) => "okay"
- case _ => "not sure what happened"
- }
-
- println("信息:",msg3)
- val msg4 = statuses match {
- case List(500, x) => s"Error followed by $x"
- case List(e, x) => s"$e was followed by $x"
- }
-
- println("信息:",msg4)
-
- val head = List(‘r‘,‘g‘,‘b‘) match {
- case x :: xs => x
- case Nil => ‘ ‘
- }
-
- println(head)
-
-
- val code = (‘h‘, 204, true) match {
- case (_, _, false) => 501
- case (‘c‘, _, true) => 302
- case (‘h‘, x, true) => x
- case (c, x, true) => {
- println(s"Did not expect code $c")
- x
- }
- }
-
- println(code)
- }
顺序输出结果如下:
- (List(3, 5, 4), ,11)
- 红色
- false
- (red,红色)
- (green,绿色)
- List(3, 2, 4, 5)
- List(33, 64)
- List(1, 2, 3, 4)
- (List(1, 2),List(3, 4, 5))
- List(3, 2, 1)
- List(3, 5, 7)
- List(a, to, ab, apple)
- List(apple, bag, bbc, one, to)
- (List(2, 3, 5),List(7, 99, 45))
- List(2, 3)
- List((1,a), (2,b))
- List(b, c, d)
- true
- List(1, 2, 3, 4)
- List(1, 2, 2, 3)
- List(1, 2)
- List(1, 6, 5)
- List(ok)
- List(milk, tea)
- 59
- 4.23
- 300
- 42.0
- true
- true
- true
- true
- =======================================
- true
- 23
- 25
- 15
- 15
- 15
- 15
- List(0, 4, 9, 15)
- List(0, 4, 9, 15)
- List(15, 11, 6, 0)
- 24, 99, 104
- ArrayBuffer(f, t)
- List((a,1), (b,2))
- Map(1 -> true, 3 -> true)
- Set(2, 5, 3)
- List(2, 5, 5, 3, 2)
- List(1, 5, 3)
- [1, 5, 3]
- (信息:,whoah, an error)
- (信息:,has error)
- (信息:,error & not found)
- (信息:,Error followed by 404)
- r
- 204
-
- Process finished with exit code 0
Scala集合笔记
原文:http://www.cnblogs.com/tonychai/p/4635146.html