Scala学习笔记——20170819

时间:2022-11-01 22:46:13

Scala 闭包

object Demo {

    def main(args: Array[String]): Unit = {
        a(0)

        aa(1)(2)//先返回一个函数,向函数传一个值
    }

    //闭包
    def a(x: Int): Unit = {
        var num = 1

        def b(y: Int): Unit = {
            println(x + num + y)
        }

        b(2)
    }

    //闭包
    def aa(x: Int): (Int) => Unit = (y: Int) => {
        println("x=" + x)
        println("y=" + y)
    }

}

Scala 集合

  • 不可变集合 (增、删、改会返回一个新的集合)
def demoVal(): Unit = {
    println("---val---")
    val list = List(5, 3, 4, 7, 2)
    println(list.head) //第一个
    println(list.tail) //除第一个的其他
    println(list.isEmpty) //是否为null

    val list1 = List(5, 3, 4, 7, 2)
    val list2 = List(15, 3, 5, 6, 7, 6)
    val list3 = list1 ++ list2 //List合并 或者 list1 ::: list2
    println(list3)
    val list4 = list2 :+ 10 //在后面增加元素 10 +: list2 在头部添加元素
    println(list4)

    val list5 = list1.addString(new StringBuilder, ":")
    println(list5)

    println(list1.apply(1)) //或者list(1)

    val list6 = List.fill(3)("hello") //3个元素,都是“hello”
    println(list6)

    val list7 = List.tabulate(6)(n => n * n) //n是角标,0*0 1*1 2*2 3*3 4*4 5*5
    println(list7)

    println(list1.reverse) //倒序
    println(list1.sorted) //由小到大排序
    println(list1.sortWith(_ > _)) //由大到小排序

    val list8 = list1.drop(1) //删除一个元素
    println(list8)
    val list9 = list1.dropWhile(_ < 6) //循环删除小于6的元素,当不满足条件时,马上跳出循环
    println("list9 -> " + list9)

    val list10 = List("hello", "world")
    println(list10.mapConserve(_.toUpperCase))//对list内的所有元素进行操作
    println(list10.map(_.toUpperCase))

    println(list1.takeWhile(_ < 6)) //循环小于6的元素,当不满足条件时,马上跳出循环

    println(list1.filter(_ < 6)) //过滤出小于6的全部元素

    println(list1.diff(list2)) //去除list1中list1与list2的交集

    println(list2.distinct) //去重

    //后面还有很多……
}
  • 可变集合 (增、删、改、查)
def demoVar(): Unit ={
    println("---var---")

    var list = new ListBuffer[Int]
    list += 1
    list += 3
    list += 5
    println(list)
}

Scala 迭代器

  • 方法,遍历集合
object IteratorDemo {

    def main(args: Array[String]): Unit = {
        val list = List(1, 2, 3, 5)

        val i = list.iterator
        while (i.hasNext) {
            println(i.next())
        }
        println("---")
        val ri = list.reverseIterator //反向遍历
        while (ri.hasNext) {
            println(ri.next())
        }
    }
}