java8和scala的简略对比
程序员文章站
2022-04-08 18:42:03
...
简单介绍一下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
推荐阅读
-
Python和Java的语法对比分析语法简洁上python的确完美胜出
-
【Java基础】接口和抽象类之间的对比
-
Javascript:关于hasOwnProperty和IndexOf的性能对比
-
Excel如何对比两列姓名找出两列相同和不同的姓名有哪些方法
-
SQL中Charindex和Oracle中对应的函数Instr对比
-
两种并发安全链表的实现和对比
-
Java8利用stream的distinct()方法对list集合中的对象去重和抽取属性去重
-
微信公众平台和微信开放平台的区别(2者区别对比分析)
-
Python中单线程、多线程和多进程的效率对比实验实例
-
Excel对比H列和F列的两列姓名用最快的方法对比出来哪个最快