Scala深入浅出实战经典:33,List的一阶函数操作代码实战详解

package com.dt.scalaInAction.demo_033

/**
 * List的一阶函数操作代码实战详解
 */
object List_FirstOrder {
    def main(args: Array[String]): Unit = {
        //方法 :: 为连接元素  
        //方法 ::: 为连接列表
        println(List(1,2,3,4):::List(4,5,6,7,8):::List(10,11))
        println(List(1,2,3,4):::(List(4,5,6,7,8):::List(10,11)))
        //List(1, 2, 3, 4, 4, 5, 6, 7, 8, 10, 11)
        
        //求长  .length方法来判断集合是否为空 效率不高 应多用 isEmpty
        println(List(1,2,3,4).length)   //4
      
        val bigData = List("Hadoop", "Spark", "Kaffka")
        //获得最后一个元素
        println("last "+bigData.last)           //last Kaffka
        //获得除去最后一个元素的其他元素
        println("init "+bigData.init)           //init List(Hadoop, Spark)
        //倒序反转 产生新的List
        println("reverse "+bigData.reverse)     //reverse List(Kaffka, Spark, Hadoop)
        //reverse没有影响原先的List  证明List是不可变的
        println("bigData "+bigData)             //bigData List(Hadoop, Spark, Kaffka)
        //获取前n个元素组成集合
        println("take "+bigData.take(2))        //take List(Hadoop, Spark)
        //去除前n个元素 剩余的元素组成集合
        println("drop "+bigData.drop(2))        //drop List(Kaffka)
        //将集合分为两部分 这两部分List在组成一个List 以前n个作为分隔线
        println("splitAt "+bigData.splitAt(2))  //splitAt (List(Hadoop, Spark),List(Kaffka))
        //通过索引查找元素  等价于bigData(2)
        println("apply "+bigData.apply(2))      //apply Kaffka
        //通过索引查找元素 def apply(n: Int): String  实质在调用apply方法 
        println("..() "+bigData(2))             //..() Kaffka
        println() 
        
        
        val data = List('a','b','c','d','e','f')
        //def indices: Range
        println("indices "+ data.indices)                 //indices Range(0, 1, 2, 3, 4, 5)
        //拉栈操作
        println("zip "+ data.indices.zip(data))           //zip Vector((0,a), (1,b), (2,c), (3,d), (4,e), (5,f))
        //将元素和索引 拉栈
        println("zipWithIndex "+ data.zipWithIndex)       //zipWithIndex List((a,0), (b,1), (c,2), (d,3), (e,4), (f,5))
        //toString
        println("toString "+ data.toString())             //toString List(a, b, c, d, e, f)
        //def mkString(start: String, sep: String, end: String): String
        println("mkString "+ data.mkString("[",",","]"))  //mkString [a,b,c,d,e,f]
        //def mkString(sep: String): String  用某个符号对元素进行连接 返回String
        println(""+ data.mkString("     "))               //a     b     c     d     e     f
        //def mkString: String  不采用分隔符连接 直接格式化输出
        println(""+ data.mkString)                        //abcdef
        println()
        
        val buffer = new StringBuilder
        data addString(buffer, "{", "::", "}")
        println(buffer)                                   //{a::b::c::d::e::f}
        println()
    
        //List --> Array
        val array = data.toArray   //val array: Array[Char]
        
        //Array --> List     def toList: List[Char] 
        println("toList " + array.toList )  
        
        
        //将List的内容拷贝到一个数组中
        val new_array = new Array[Char](10)
        //def copyToArray[B >: Char](xs: Array[B], start: Int): Unit
        data.copyToArray(new_array, 3)  
        new_array.foreach(print)       //   abcdef
        println
       
        
        val iterator = data.toIterator //val iterator: Iterator[Char]
        println(iterator.next)         //a
        println(iterator.next)         //b
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值