scala学习一

0、Java调用scala程序

java使用伴生对象: 伴生对象名.MODULE.方法名();

 public static void main(String[] args) {
        //调用scala程序
        Demo5$.MODULE$.myprint();
    }

1、scala List用法

1、数组之间相加
1)++[B] 在A元素后面追加B元素
2)++: 在A元素后面追加B元素,与++区别的是结果使用的右边边的数据类型

    var list1 = List(1);
    var list4 = List('a');
    var list5 = list4 ++ list1;
    println(list5(0));
结果:a

3)A:::B list相加,A添加到B前面。
A.:::B list相加,A添加到B后面。
concat:拼接两个list。

     val site = "Runoob" :: ("Google" :: ("Baidu" :: Nil));
      println("~"+site(0));
      val site1 = "runoob1" ::("google1"::Nil);
      println(site1(1))
      val sit2 = site:::site1;
      println(sit2(0))
      val sit3 = site.:::(site1);
      println(sit3(0))
       val sit4 = List.concat(site,site1);
      println(sit4(1));
      结果:
        ~Runoob
        google1
        Runoob
        runoob1
        Google

2、元素与list之间相加
1) +: 在List的前面添加元素,符号左边的是元素,右边的是list

    var list1 = List(1);
    var list4 = List('a');
    var list5 = list4 +: list1;
    println(list5(0));
结果:List(a)

 var list1 = List(1);
    var list5 = 'a'+: list1;
    println(list5(0));
结果:a

2)+:和+: 的区别是,符号左边的是list,右边的是元素,在list后面添加

 var list1 = List(1);
    var list4 = List('a');
    var list5 = list4 :+ 1;
    println(list5(1));

结果:1

 var list1 = List(1);
    var list4 = List('a');
    var list5 = list4 :+ list1;
    println(list5(1));

结果:List(1)

3)::元素直接拼接,元素添加到list前面

       val site = "Runoob" :: ("Google" :: ("Baidu" :: Nil));
       val sitss = "test"::site;
       println("~"+site(0));
       println("~"+sitss(0));
       结果:~Runoob
            ~test

3、遍历
1、/:应用二进制运算符起始值,从左到右遍历迭代所有元素

    var list1 = List(1,2,3,4,5);
    var a = (10 /: list1)(_-_);
    println(a);
    结果:-5

4、addstring

1、addString(b: StringBuilder) 对列表中的所有元素迭代将拼接成字符串
2、addString(b: StringBuilder, sep: String) 使用分隔符输出字符串
3、addString(b: StringBuilder, start: String, sep: String, end: String) 定义输出以什么开始、分割、结束.new StringBuilder()中的内容也被添加到了前面。

    var list1 = List(1,2,3,4,5);
    var result = list1.addString(new StringBuilder(),"MyJava myJava = new MyJava(",",",")");
    println(result);
    结果:MyJava myJava = new MyJava(1,2,3,4,5)

5、aggregate
举例说明:求平均值。

     var list1 = List(1, 2, 3, 4, 5);
    var result = list1.aggregate((0, 0))({ (sum, ch) => (sum._1 + ch, sum._2 + 1) }, { (p1, p2) => (p1._1+p2._1, p1._2+p2._2) });
    println(result._1/result._2);
    结果:3
首先,初始值是(0,0),这个值在后面2步会用到。
然后,(sum,ch) => (sum._1 + ch, sum._2 + 1),ch即是函数定义中的T,sum即为aggregate((0, 0))中的集合,ch是list中的元素。。所以sum._1 + ch, sum._2 + 1的过程如下。
1.   0+1,  0+1
2.  1+2,  1+1
3.  3+3,  2+1
4.  6+4,  3+1
5.  10+5,  4+1

结果result即是(15,5)。
相除得到3

参考博客

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页