• scala 基础


    // ::链接字符串 链接字符和list

    scala> val a = List(1,2,3)
    a: List[Int] = List(1, 2, 3)
    scala> val b = 0::a
    b: List[Int] = List(0, 1, 2, 3)
    scala> val c = "x"::"y"::"z" :: Nil
    c: List[String] = List(x, y, z)

    // :::链接两个list Any公共父类

    scala> val d = a ::: c
    d: List[Any] = List(1, 2, 3, x, y, z)

    //head 返回第一个元素

    scala> d.head
    res20: Any = 1
    
    scala> a.head
    res21: Int = 1
    
    scala> b.head
    res22: Int = 0

    //tail 除第一个元素以外的其他元素组成的列表-〉伪列表

    scala> a.tail
    res23: List[Int] = List(2, 3)
    
    scala> b.tail
    res24: List[Int] = List(1, 2, 3)
    
    scala> c.tail
    res25: List[String] = List(y, z)

    //isEmpty

    scala> a.isEmpty
    res26: Boolean = false
    
    scala> Nil.isEmpty
    res27: Boolean = true
    
    scala> def checkEmpty(l : List[Int]):String = {
    | if(l.isEmpty) ""
    | else l.head.toString}
    checkEmpty: (l: List[Int])String
    
    scala> checkEmpty(a)
    res28: String = 1

    //filter应用

    scala> a
    res29: List[Int] = List(1, 2, 3)
    
    scala> a.filter(x=>x%2==1) 
    res30: List[Int] = List(1, 3)

    //toList

    scala> "acd1r3wqa".toList
    res31: List[Char] = List(a, c, d, 1, r, 3, w, q, a)

    //isDigit

    scala> "acd1r3wqa".toList.filter(x=>Character.isDigit(x))
    res33: List[Char] = List(1, 3)

    //takeWhile

    scala> "acd1r3wqa".toList.takeWhile(x=>Character.isDigit(x))
    res34: List[Char] = List()
    
    scala> "acd1r3wqa".toList.takeWhile(x=>x != '3')
    res38: List[Char] = List(a, c, d, 1, r)

    //toUpperCase _通配匿名函数

    scala> c
    res41: List[String] = List(x, y, z)
    
    scala> c.map(x=>x.toUpperCase)
    res42: List[String] = List(X, Y, Z)
    
    scala> c.map(_.toUpperCase)
    res43: List[String] = List(X, Y, Z)

    //list-map/flatMap可以将两层list转为一层/_多层通配

    scala> a
    res44: List[Int] = List(1, 2, 3)
    
    scala> a.filter(_%2==1).map(_+10)
    res45: List[Int] = List(11, 13)
    
    scala> val e =List(a,List(4,5,6))
    e: List[List[Int]] = List(List(1, 2, 3), List(4, 5, 6))
    
    scala> e.map(x=>x.filter(_%2==0))
    res48: List[List[Int]] = List(List(2), List(4, 6))
    
    scala> e.map(_.filter(_%2==0))
    res49: List[List[Int]] = List(List(2), List(4, 6))
    
    scala> e.flatMap(_.filter(_%2==0))
    res51: List[Int] = List(2, 4, 6)

    //Scala reduceLeft与flodLeft

    scala> a
    res52: List[Int] = List(1, 2, 3)
    
    scala> a.reduceLeft(_+_)
    res53: Int = 6
    
    scala> a.reduceLeft((x,y)=>x+y)
    res54: Int = 6

    //flodLeft 类型与最左边参数类型一致

    scala> a.foldLeft(0)(_+_)
    res55: Int = 6
    
    scala> a.foldLeft(1)(_+_)
    res56: Int = 7
    
    scala> a.foldLeft(4)(_+_)
    res57: Int = 10
    
    scala> a.foldLeft(4.0)(_+_)
    res58: Double = 10.0

    // Scala Rang与Stream
    //Scala Rang

    scala> 1 to 10
    res59: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
    scala> 1 to 10 by 2
    res60: scala.collection.immutable.Range = Range(1, 3, 5, 7, 9)
    
    scala> (1 to 10).toList
    res61: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
    scala> 1 until 10
    res62: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)

    //Stream

    scala> 1#::2#::3#::Stream.empty
    res63: scala.collection.immutable.Stream[Int] = Stream(1, ?)
    
    scala> val stream=(1 to 10000000).toStream
    stream: scala.collection.immutable.Stream[Int] = Stream(1, ?)
    
    scala> stream.head
    res64: Int = 1
    
    scala> stream.tail
    res65: scala.collection.immutable.Stream[Int] = Stream(2, ?)

    //Scala tuple与map
    //tuple

    scala> (1,2)
    res66: (Int, Int) = (1,2)
    
    scala> 1->2
    res67: (Int, Int) = (1,2)
    
    scala> (1,"xiaoming","english",99.9)
    res69: (Int, String, String, Double) = (1,xiaoming,english,99.9)
    
    scala> val t=(1,"xiaoming","english",99.9)
    t: (Int, String, String, Double) = (1,xiaoming,english,99.9)
    
    scala> t._1
    res71: Int = 1
    
    scala> t._2
    res72: String = xiaoming

    =====================================================

    scala> def sumSq(in:List[Int]):(Int,Int,Int)=in.foldLeft((0,0,0))((t,v)=>(t._1+1,t._2+v,t._3+v*v))
    sumSq: (in: List[Int])(Int, Int, Int)
    
    scala> a
    res84: List[Int] = List(1, 2, 3)
    
    scala> sumSq(a)
    res85: (Int, Int, Int) = (3,6,14)
    
    scala> sumSq(_)
    res86: List[Int] => (Int, Int, Int) = <function1>

    //map

    scala> val f = Map(1->"xiaoming",2->"alisa")
    f: scala.collection.immutable.Map[Int,String] = Map(1 -> xiaoming, 2 -> alisa)
    
    scala> f(1)
    res88: String = xiaoming
    
    scala> f(2)
    res89: String = alisa
    
    scala> f.contains(1)
    res90: Boolean = true
    
    scala> f.contains(3)
    res91: Boolean = false
    
    scala> f.keys
    res92: Iterable[Int] = Set(1, 2)
    
    scala> f.values
    res93: Iterable[String] = MapLike(xiaoming, alisa)
    
    scala> f+(5->"eric")
    res94: scala.collection.immutable.Map[Int,String] = Map(1 -> xiaoming, 2 -> alisa, 5 -> eric)
    
    scala> f - 1
    res95: scala.collection.immutable.Map[Int,String] = Map(2 -> alisa)
    
    scala> f ++ List(3->"nan",4->"frank")
    res96: scala.collection.immutable.Map[Int,String] = Map(1 -> xiaoming, 2 -> alisa, 3 -> nan, 4 -> frank)
    
    scala> f
    res97: scala.collection.immutable.Map[Int,String] = Map(1 -> xiaoming, 2 -> alisa)
    
    scala> f--List(1,2,3)
    res98: scala.collection.immutable.Map[Int,String] = Map()
    
    scala> f ++ List(3->"nan",4->"frank")--List(1,4)
    res99: scala.collection.immutable.Map[Int,String] = Map(2 -> alisa, 3 -> nan)

    //快速排序

    scala> def qSort(a:List[Int]):List[Int]= if (a.length<2)a else qSort(a.filter(_<a.head))++ a.filter(_==a.head)++ qSort(a.filter(_>a.head))
    qSort: (a: List[Int])List[Int]
    
    scala> qSort(List(1,4,35,76,43,21,53,6))
    res81: List[Int] = List(1, 4, 6, 21, 35, 43, 53, 76)
  • 相关阅读:
    P1135 奇怪的电梯
    pycharm设置快捷键在keymap下拉列表没有eclipse怎么办
    记录selenium简单实现自动点击操作
    selenium 批量下载文件,json,重命名
    python3.6+selenium使用chrome浏览器自动将文件下载到指定路径
    selenium + Java 设置文件默认下载路径
    详解介绍Selenium常用API的使用Java语言(完整版)
    Pycharm安装robot framework运行插件
    Python之robotframework+pycharm测试框架!
    基于Python3 Robot framework环境搭建
  • 原文地址:https://www.cnblogs.com/liupuLearning/p/6484666.html
Copyright © 2020-2023  润新知