scala语言很简洁,让人看起来很舒服的感觉,例如查看字符串中是否存在大写字符,

val nameHasUpper=name.exist(_.isUpperCase)一句话就解决。

例如wordcount

val rdd=sc.textFile("").filter(_.split("\t")).map(x=>(x(1),1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1))

1 定义

scala 中定义变量用var,定义常量用val。

定义方法:def function(){}

带有返回值类型的方法 def function(a:Int,b:Int):Int={}

 

2 注意点

scala区分大小写

所有类名第一个字母大写

所有方法名称第一个字母小写

程序文件名与该对象名称完全匹配

Thread 的 yield 方法, 在 Scala 中你不能使用 Thread.yield()是因为 yield 为 Scala 中的关键字, 你必须使用 Thread.`yield`()来使用这个方法。

 

3 伴生对象与伴生类

伴生对象与伴生类本质上时不同的两个类,伴生类和伴生对象之间可以相互访问到对方的成员变量,包括私有的成员变量和方法。

 

4 scala元组tuple

tuple和List一样,定义了里面的元素是不可变的,与List不同的是tuple可以包含不同的类型的元素。

如果需要在方法中返回多个对象时,Java通常是创建javabean,scala可以返回元祖

val pair=(10,"today",false)

println(pair._1)

 

5 scala集合可以分为可变集合(scala.collection.mutable)与不可变集合(scala.collection.immutable)

默认是使用不可变集合,因此如果需要使用可变集合需要导入可变集合的包

import scala.collection.mutable.Map

val tremap=Map[Int,String]()

 treamap+=(1->"sdfa")
 treamap+=(2->"aaa")
 treamap+=(3->"ssss")
 println(treamap(2))
 
6 scala I/O
scala I/O更多的调用java中的I/O类或者是通过对Java的I/O进行封住实现I/O
val fileWriter=new FileWriter("")
fileWriter.write("")
fileWriter.flush()
fileWriter.close()
 
从文件里读取文本行
import scala.io.Source
 
if(args.length>0) {
  for (line <- Source.fromFile(args(0)).getLines)
    print(line.length + " " + line)
}
  else
     Console.err.println("filenamber")
 
7 scala基本数据结构
根类Any分为AnyVal 和AnyRef
AnyVal 包括了Boolean,Byte ,Short,Int,Long,Char,Double,Float,Unit九大类
AnyRef包括了String,集合类Iterable:Seq,List
Null处于AnyRef类的底层
Nothing是所有类的子类,一般用于指示程序返回非正常结果,利用Nothing作为返回值可以增加程序灵活性
Any类包含了基本的五个方法,==,!=,equals(),hashCode()和toString
posted on 2017-04-25 10:20  流浪在伯纳乌  阅读(156)  评论(0编辑  收藏  举报