• Scala常用方法


    1.flatten

    可以把嵌套的结构展开.

    scala> List(List(1,2),List(3,4)).flatten
    res0: List[Int] = List(1, 2, 3, 4)
    2、flatmap

    flatMap结合了map和flatten的功能。接收一个可以处理嵌套列表的函数,然后把返回结果连接起来。

    scala> List(List(1,2),List(3,4)).flatMap(x=>x.map(x=>x*2))
    res5: List[Int] = List(2, 4, 6, 8)
    3.filter

    滤除掉使函数返回false的元素

    scala> def isEven(i: Int): Boolean = i % 2 == 0
    isEven: (i: Int)Boolean
    scala> List(1,2,3,4).filter(isEven _)
    res6: List[Int] = List(2, 4)
    4.zip

    zip方法将两个集合结合在一起

    scala>  List('a,'b,'c).zip(List(1,2,3))
    res32: List[(Symbol, Int)] = List(('a,1), ('b,2), ('c,3))
    5.zipWithIndex

    将元素和下标结合在一起

    scala> List(2,3,4,5).zipWithIndex
    res33: List[(Int, Int)] = List((2,0), (3,1), (4,2), (5,3))
    6、foreach

    foreach和map相似,只不过它没有返回值,foreach只要是为了对参数进行作用。

    比如 names.foreach{name=>println(name)}
    7.mkString 方法

    scala通过mkString方法把一个集合转化为一个字符串


    使用mkString方法来打印一个集合内容,下面给一个简单的例子:

        scala> val a = Array("apple", "banana", "cherry")
        a: Array[String] = Array(apple, banana, cherry)
         
        scala> a.mkString
        res3: String = applebananacherry

        使用mkString方法你会看到结果并不漂亮,我们来加一个分隔符:

        scala> a.mkString(",")
        res4: String = apple,banana,cherry
         
        scala> a.mkString(" ")
        res5: String = apple banana cherry

        这样看起来就好看多了,同样你可以添加一个前缀和一个后缀:

        scala> a.mkString("[", ", ", "]")
        res6: String = [apple, banana, cherry]

        如果你想把一个嵌套集合转化为一个字符串,比如嵌套数组,首先你要展开这个嵌套数组,然后调用mkString方法:

        scala> val a = Array(Array("a", "b"), Array("c", "d"))
        a: Array[Array[String]] = Array(Array(a, b), Array(c, d))
         
        scala> a.flatten.mkString(",")
        res7: String = a,b,c,d

    数组常用算法:

    scala> val arr=Array(1,2,3,4,5,6,7,8,9)
    arr: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
    scala> arr.sum
    res29: Int = 45
    scala> arr.max
    res30: Int = 9
    scala> arr.min
    res31: Int = 1
    scala> arr.toString()
    res32: String = [I@374f10bb
    scala> arr.mkString("#")
    res33: String = 1#2#3#4#5#6#7#8#9
    scala> arr.mkString("<",",",">")
    res34: String = <1,2,3,4,5,6,7,8,9>
    序列类--List

    val list1=List(1,2,3)

    //将0插入到list1的前面生成一个新的List        0,1,2,3

    val lst2=0 :: list1

    val lst3=list1 .:: (0)

    val lst4=0 +: list1

    val lst5=list1 .+: (0)

    //将一个4添加到List1的后面产生一个新的集合        1,2,3,4

    val lst6=list1 :+ 4        


    val list2=List(4,5,6)

    //将两个List合并成一个新的List

    val lst7=list1 ++ list2        //1,2,3,4,5,6

    //将list2放到list1后面生成一个新的集合

    val lst8= list1 ++: list2

    //将list2插入到list1前面生成一个新的集合

    val lst9=list1 .::: (list2)


        :: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表。用法为 x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元素,也就是说新生成的列表长度为list的长度+1(btw, x::list等价于list.::(x))

        :+和+: 两者的区别在于:+方法用于在尾部追加元素,+:方法用于在头部追加元素,和::很类似,但是::可以用于pattern match ,而+:则不行. 关于+:和:+,只要记住冒号永远靠近集合类型就OK了。

        ++ 该方法用于连接两个集合,list1++list2

        ::: 该方法只能用于连接两个List类型的集合

    //判断是否为空

    scala>list1.isEmpty

    res108:Boolean=false

    //取第一个元素

    scala>list1.head

    res109:Int=1

    //取除了第一个元素剩余的元素,返回的是列表

    scala>list1.tail

    res110:List[Int]=List(2,3,4)

    //取列表第二个元素

    scala>list1.tail.head

    res111:Int=2

    //插入排序算法实现

    def isort(xs : List[Int]) : List[Int]=

    if( xs.isEmpty ) Nil

    else insert( xs.head , isort(xs.tail))


    def insert(x : Int,sx : List[Int]) : List[Int]=

    if( xs.isEmpty || x<=xs.head) x :: xs

    else xs.head :: insert(x,xs.tail)

    //List 连接操作

    scala>List(1,2,3) ::: List(4,5,6)

    res123:List[Int]=List(1,2,3,4,5,6)

    //取除最后一个元素外的元素,返回的是列表

    scala>list1.init

    res124:List[Int]=List(1,2)

    //取列表最后一个元素

    scala>list1.last

    res125:Int=3

    //列表元素倒置

    scala>list1.reverse

    res126:List[Int]=List(3,2,1)

    //一些好玩的方法调用

    scala>list1.reverse.reverse == list1

    res127:Boolean = true

    scala>list1.reverse.init

    res128:List[Int]=List(3,2)

    scala>list.tail.reverse

    res129:List[Int]=List(3,2)

    //丢弃前n个元素

    scala>list1 drop 2

    res130:List[Int]=List(3)

    //获取前n个元素

    scala>list1 take 1

    res131:List[Int]=List(1)

    //将列表进行分割

    scala>list1.splitAt(2)

    res1: (List[Int], List[Int]) = (List(1, 2),List(3))

    //前一个操作与下列语句等同

    scala>(list1.take(2),list1.drop(2))

    res3: (List[Int], List[Int]) = (List(1, 2),List(3))

    //Zip操作

    scala>val nums=List(1,2,3,4)

    scala>val chars=List('1','2','3','4')

    scala>nums zip chars

    res4: List[(Int, Char)] = List((1,1), (2,2), (3,3), (4,4))

    //List toString 方法

    scala>list1.toString

    res1:String=List(1,2,3)

    //List mkString方法

    scala>list1.mkString

    res1:String=123

    //转化成数组

    scala>list1.toArray

    res1:Array[Int]=Array(1,2,3)

  • 相关阅读:
    mysql 批量插入与单条插入 的效率比较
    jQuery Validate自定义验证方法实现方式
    分析比较多表查询中的IN与JOIN
    SQL中on条件与where条件的区别
    jQuery.ajax向后台传递数组问题
    jquery ajax post 传递数组 ,多checkbox 取值
    孙俪袭击入股海润影视折射啥弊端?
    [WebView学习之三]:使用WebView来创建Apps
    hdu1010 dfs+路径剪枝
    poj 3696 The Luckiest number 欧拉函数在解a^x=1modm的应用
  • 原文地址:https://www.cnblogs.com/wxk161640207382/p/11308715.html
Copyright © 2020-2023  润新知