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
相关文章推荐
- scala 对比java 贴
- Java、Scala和Go语言多线程并发对比测试结果和结论
- scala 一些概念 与 java的对比
- Google:C++、Java、Scala、Go四种语言性能对比
- Scala访问修饰符可见性问题(对比Java)
- scala与java的性能对比
- Scala中数组和Java数组的对比
- scala中99乘法表与java中99乘法表对比
- scala与Java性能对比
- Scala和Java的循环性能对比
- Java、Scala和Go语言多线程并发对比测试结果和结论
- Java、Scala和Go语言多线程并发对比测试结果和结论
- scala与java的性能对比
- 对比scala和java编写的spark wordcount程序
- Scala和Java在多核处理性能的一次对比和思考
- scala与java对比学习(一)
- C++和java技术特性对比
- 使用函数接口和枚举实现配置式编程(Java与Scala实现)
- Java中四种XML解析技术对比(Dom、Sax、Dom4j JDom)
- IDEA里面添加lombok插件,编写简略风格Java代码(转)