您的位置:首页 > 编程语言 > Java开发

java8和scala的简略对比

2016-05-22 17:03 375 查看

简单介绍一下java和scala的不同,公司里暂时还没有使用到scala,也就没有更多的去看它的API,语法挺精简的,有兴趣的可以多看下官网:  http://www.scala-lang.org/api/current/#package

 

1、scala中的hello world:

def main(args: Array[String]){
var n:int = 2;
while(n<=6){
// 此处可以scala中的插值操作符s,
// 而不必要像java中使用+来连接每个字符串:"hello " + n + " world"
println (s"hello ${n} world")
n += 1
}
}

 

 

2、区间的表达

// java中的区间
IntStream.rangeClosed(1, 7).forEach(n -> System.out.println("hello " + n + " world"));
//guava中的区间
Range<Integer> range = Range.closed(1, 7);

// scala中的区间创建: start to end 或 start.to(end)
// 1 to 7 foreach { n => println(s"hello ${n} world")}
// groovy中的区间创建:
// def list = (1..7).collect()

 

 

3、scala中基础数据结构

(1)对比map的创建方式

HashMap java_map = new HashMap();
HashMap<Object, Object> guava_map = Maps.newHashMap();
val scala_map = Map("name" -> "xiaomi", "email" -> "max@xxx.com")
def groovy_map = [name:'xiaomi', email:"max@xxx.com"]

 

(2)scala中val和var的区别

val: 表示变量为只读状态,类似java中使用final修饰过一样。

var: 表示变量可以被读写。

 

(3)不可变集合

之所以在scala中引入val不可变集合是因为,scala中的这些集合都是持久化的,当更新一个集合时实际上并不是在原集合上更新,而是创建了一个新的集合并持久化。

不可变集合的对比:

ImmutableList<Object> guava_list = ImmutableList.of();
Object java_list = Collections.unmodifiableList(list);
val scala_list = List("name", "email");

 

(4)对比java+scala中集合的操作(都采用并行流的方式)

List<String> views = Arrays.asList("wsbs","xwzx","bmfw","wshd");
views.parallelStream().filter(str -> str.length()>3).map(String::toUpperCase);
views.par filter(_.length()>3) map(_.toUpperCase())
// scala中的stream还可以记录曾经计算出过的值(在内存中使用缓存保存的)
// scala在调用方法时,若方法没有参数值,那么可以省略它的括号,比如直接toUpperCase

 

(5)元组

val person = ("xiaomi", "max@xxx.com");
println (person._1)  // xiaomi,取值时从1开始取
println (person._2)	// max@xxx.com

 

 

更多API请参考: http://www.scala-lang.org/api/current/#package

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: