Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Scala入门篇 顶

Scala入门篇 顶

作者头像
算法之名
发布于 2019-08-21 09:15:25
发布于 2019-08-21 09:15:25
47500
代码可运行
举报
文章被收录于专栏:算法之名算法之名
运行总次数:0
代码可运行

1、定义变量

var 可变

val 不可变,相当于Java中的final

Unit相当于Java中的void,以()表示

scala> val a = println("ddd") ddd a: Unit = ()

2,声明数组

scala> val arr = Array(1,2,3,4,5) arr: Array[Int] = Array(1, 2, 3, 4, 5)

3,for循环

scala> for(ele <- arr){ println(ele) } 1 2 3 4 5

scala> for(ele <- 0 to 4) { println(arr(ele)) } 1 2 3 4 5

scala> for(ele <- 0 until 5) { println(arr(ele)) } 1 2 3 4 5

带条件的循环

scala> for(ele <- arr if ele % 2==0) println(ele) 2 4

双层for循环

scala> for(i <- 1 to 3;j <- 1 to 3 if i !=j) println((10 * i + j)) 12 13 21 23 31 32

把循环结果赋给一个新的数组

scala> val r1 = for(a <- arr if a % 2 == 0) yield a r1: Array[Int] = Array(2, 4)

4,定义方法

scala> def add(a: Int,b: Int) = a + b add: (a: Int, b: Int)Int

scala> add(2,5) res7: Int = 7

无参无返回

scala> def say = println("hello") say: Unit

scala> say hello

方法转函数

scala> add _ res9: (Int, Int) => Int = <function2>

5,定义函数

scala> val fx = (a: Int,b: Int) => a + b fx: (Int, Int) => Int = <function2>

scala> fx(3,6) res10: Int = 9

scala> val fn:(Int,Int) => Int = (x,y) => x + y fn: (Int, Int) => Int = <function2>

scala> fn(6,2) res11: Int = 8

scala> val f1 = (name: String) => println(name) f1: String => Unit = <function1>

scala> f1("ggg") ggg

scala> val f2:(String) => Unit = name => println(name) f2: String => Unit = <function1>

scala> f2("hhh") hhh

6,传值调用(方法)和传名调用(函数)

传值是把100-5=95的值给循环了3次,输出3个95,传名是把countMoney方法隐式转换成函数,把函数整体传入循环,循环4次,money每次都会扣减5

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object Money {
  var money = 100
  def payMoney = {
    money -= 5
  }
  def countMoney = {
    payMoney
    money
  }
  def printByValue(x: Int) = {
    for (a <- 0 until 3)
      println(s"测试:${x}元")
  }

  def printByName(x: => Int) = {
    for (a <- 0 to 3)
      println(s"测试:${x}元")
  }
  def main(args: Array[String]): Unit = {
    printByValue(countMoney)
    printByName(countMoney)
  }
}

输出结果

测试:95元 测试:95元 测试:95元 测试:90元 测试:85元 测试:80元 测试:75元

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object Calculate {
  def add(a: Int,b: Int) = {
    a + b
  }
  def add2(f:(Int,Int) => Int,a: Int,b: Int) = {
    f(a,b)
  }

  def add3(f:Int => Int,b: Int) = {
    f(b) + b
  }
  val fx = (a: Int,b: Int) => a + b
  val f = (a: Int) => a * 10
  def main(args: Array[String]): Unit = {
    println(add(6,1))
    println(add2(fx,13,5))
    println(add3(f,6))
  }

}

输出结果

7 18 66

7,可变参数以及参数的默认值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object ManyParams {
  def add(ints: Int*) = {
    var sum = 0
    for (v <- ints) {
      sum += v
    }
    sum
  }

  def dee(a: Int = 6,b: Int = 4) = {
    a + b
  }
  def main(args: Array[String]): Unit = {
    val i = add(3,5)
    println(i)
    println(dee())
    println(dee(b=1,a=6))
  }
}

输出结果

8 10 7

8,高阶函数

首先判断调用的layout方法是否满足apply的第一个函数参数,很明显,layout有一个Int的参数,返回的是字符串,完全符合f:Int => String,然后根据f(v),把v作用在f函数中.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object HightFunc extends App{
  def apply(f:Int => String,v:Int) = f(v)
  def layout(x:Int) = "[" + x.toString + "]"
  println(apply(layout,10))
}

输出结果

[10]

9,部分参数应用函数

scala> def m(a: Int,b: Int) = a + b m: (a: Int, b: Int)Int

scala> val partM = m(1,_:Int) partM: Int => Int = <function1>

scala> partM(5) res14: Int = 6

scala> val partM2 = (x: Int) => m(1,x) partM2: Int => Int = <function1>

scala> partM2(6) res15: Int = 7

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.Date

object PartParmFunc extends App{
  def log(date: Date,message: String) = {
    println(s"$date,$message")
  }
  val date = new Date()
  val logBoundDate = log(date, _:String)
  logBoundDate("gogogo")
}

输出结果

Fri Sep 21 15:40:15 CST 2018,gogogo

10,柯里化

scala> def add(a: Int)(b: Int) = a + b add: (a: Int)(b: Int)Int

scala> add(4)(8) res16: Int = 12

高阶函数演变

scala> def add(a: Int) = (b:Int) => a + b add: (a: Int)Int => Int

scala> val x = add(5) x: Int => Int = <function1>

scala> x(8) res17: Int = 13

11,偏函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
object ScalaPartialFunction {
  def func(str: String): Int = {
    if (str.equals("a")) 97
    else 0
  }

  /**
    * 偏函数:PartialFunction[参数类型,返回值类型]
    * @return
    */
  def func1:PartialFunction[String,Int] = {
    case "a" => 97
    case _ => 0
  }

  def f1:PartialFunction[Any,Int] = {
    case i:Int => i * 10
  }
  def main(args: Array[String]): Unit = {
    println(func("a"))
    println(func1("a"))
    val arr = Array[Any](1,2,4,"你大爷的")
    val arr1 = Array(1,3,6,8)
    val collect = arr.collect(f1)
    val collect1 = arr1.map((x: Int) => x * 10)
    val collect2 = arr1.map(x => x * 10)
    val collect3 = arr1.map(_ * 10)
    val collect4 = arr1.map {case x: Int => x * 10}
    println(collect.toBuffer)
    println(collect1.toBuffer)
    println(collect2.toBuffer)
    println(collect3.toBuffer)
    println(collect4.toBuffer)
  }
}

输出结果

97 97 ArrayBuffer(10, 20, 40) ArrayBuffer(10, 30, 60, 80) ArrayBuffer(10, 30, 60, 80) ArrayBuffer(10, 30, 60, 80) ArrayBuffer(10, 30, 60, 80)

12,数组使用

new关键字初始数组

scala> val arr = new Array[Int](3) arr: Array[Int] = Array(0, 0, 0)

scala> arr(0) = 100

scala> arr res1: Array[Int] = Array(100, 0, 0)

长度不可变,内容可变

map映射

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val arr = Array(1,3,5,7,8)
//map映射
val fx = (x: Int) => x * 10
//ar1经过map映射操作后会返回一个新的数组
val ar1 = arr.map(fx)

flatten,flatMap扁平化

scala> val arr = Array("hello tom","hello jenie") arr: Array[String] = Array(hello tom, hello jenie)

scala> arr.length res4: Int = 2

scala> arr.map(_.split(" ")) res5: Array[Array[String]] = Array(Array(hello, tom), Array(hello, jenie))

scala> arr.map(_.split(" ")).flatten res6: Array[String] = Array(hello, tom, hello, jenie)

scala> arr.flatMap(_.split(" ")) res7: Array[String] = Array(hello, tom, hello, jenie)

foreach遍历

scala> arr.flatMap(_.split(" ")).foreach(println) hello tom hello jenie

scala> arr.flatMap(_.split(" ")).foreach(x => println(x)) hello tom hello jenie

groupBy分组(Map)

scala> arr.flatMap(_.split(" ")).groupBy(x => x) res10: scala.collection.immutable.Map[String,Array[String]] = Map(jenie -> Array(jenie), tom -> Array(tom), hello -> Array(hello, hello))

Map取值(List)

scala> arr.flatMap(_.split(" ")).groupBy(x => x).map(x => x._2) res11: scala.collection.immutable.Iterable[Array[String]] = List(Array(jenie), Array(tom), Array(hello, hello))

取每个Map值的长度

scala> arr.flatMap(_.split(" ")).groupBy(x => x).mapValues(_.length) res12: scala.collection.immutable.Map[String,Int] = Map(jenie -> 1, tom -> 1, hello -> 2)

转成list(map不能排序)

scala> arr.flatMap(_.split(" ")).groupBy(x => x).mapValues(_.length).toList res13: List[(String, Int)] = List((jenie,1), (tom,1), (hello,2))

list排序(升序)

scala> arr.flatMap(_.split(" ")).groupBy(x => x).mapValues(_.length).toList.sortBy(x => x._2) res14: List[(String, Int)] = List((jenie,1), (tom,1), (hello,2))

list排序(降序)

scala> arr.flatMap(_.split(" ")).groupBy(x => x).mapValues(_.length).toList.sortBy(x => - x._2) res15: List[(String, Int)] = List((hello,2), (jenie,1), (tom,1))

13,集合使用

长度可变数组(ArrayBuffer)

scala> import scala.collection.mutable._ import scala.collection.mutable._

scala> val ab = ArrayBuffer(1,2,3) ab: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3)

scala> ab += (4,5,6) res17: ab.type = ArrayBuffer(1, 2, 3, 4, 5, 6)

scala> ab res18: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5, 6)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
  * Array:
  *    内容都可变
  *    长度可变数组(ArrayBuffer)和长度不可变数组Array
  *
  *    在Scala中,集合分为可变集合(mutable)和不可变集合(immutable)
  *    可变集合指的是:长度可变,内容可变
  *    不可变集合:长度不可变,内容也不可变
  */

不可变List

scala> val list = List(1,2,4) list: List[Int] = List(1, 2, 4)

scala> list += (5,7) <console>:13: error: value += is not a member of List[Int] list += (5,7) ^

scala> list(0) = 100 <console>:13: error: value update is not a member of List[Int] list(0) = 100

可变List(ListBuffer)

scala> import scala.collection.mutable.ListBuffer import scala.collection.mutable.ListBuffer

scala> val lb = ListBuffer(1,2,3,4) lb: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4)

scala> lb += (8,9) res2: lb.type = ListBuffer(1, 2, 3, 4, 8, 9)

scala> lb res3: scala.collection.mutable.ListBuffer[Int] = ListBuffer(1, 2, 3, 4, 8, 9)

scala> lb(0) = 100

scala> lb res5: scala.collection.mutable.ListBuffer[Int] = ListBuffer(100, 2, 3, 4, 8, 9)

不可变Map

scala> val mp = Map("xx" -> 1) mp: scala.collection.immutable.Map[String,Int] = Map(xx -> 1)

scala> mp res1: scala.collection.immutable.Map[String,Int] = Map(xx -> 1)

可变Map(HashMap)

scala> import scala.collection.mutable.HashMap import scala.collection.mutable.HashMap

scala> val hmp = HashMap("x" -> 1) hmp: scala.collection.mutable.HashMap[String,Int] = Map(x -> 1)

scala> hmp res0: scala.collection.mutable.HashMap[String,Int] = Map(x -> 1)

scala> hmp += "b" -> 0 res2: hmp.type = Map(b -> 0, x -> 1)

scala> hmp res3: scala.collection.mutable.HashMap[String,Int] = Map(b -> 0, x -> 1)

List方法

scala> Nil res5: scala.collection.immutable.Nil.type = List()

scala> val list = List(9,10,4,2,7,1) list: List[Int] = List(9, 10, 4, 2, 7, 1)

scala> list.head res6: Int = 9

scala> list.tail res7: List[Int] = List(10, 4, 2, 7, 1)

右结合::生成为新的List,所有结合前的不可变List不变

scala> 100 :: Nil res8: List[Int] = List(100)

scala> val l = Nil l: scala.collection.immutable.Nil.type = List()

scala> 9 :: l res9: List[Int] = List(9)

scala> l res10: scala.collection.immutable.Nil.type = List()

scala> 1::2::3::Nil res11: List[Int] = List(1, 2, 3)

scala> Nil.::(3) res0: List[Int] = List(3)

拼接生成新List

scala> val list = List(3,6,8) list: List[Int] = List(3, 6, 8)

scala> list res2: List[Int] = List(3, 6, 8)

scala> list ++ List(7,0,1) res3: List[Int] = List(3, 6, 8, 7, 0, 1)

scala> list res4: List[Int] = List(3, 6, 8) //原list不变

头部合并(++:,+:)

scala> list. ++:(List(9)) res5: List[Int] = List(9, 3, 6, 8)

scala> list.+:(9527) res6: List[Int] = List(9527, 3, 6, 8)

尾部合并(:+)

scala> list :+ (1) res8: List[Int] = List(3, 6, 8, 1)

scala> list res9: List[Int] = List(3, 6, 8)

拼接2个List(:::)

scala> list ::: List(1,5,7) res10: List[Int] = List(3, 6, 8, 1, 5, 7)

统计条件数(count)

scala> list.count(x => x>2) res1: Int = 3

过滤(filter)

scala> list.filter(x => x>3) res2: List[Int] = List(6, 8)

排序(sorted,sortBy,sortWith)

scala> list.sorted res3: List[Int] = List(3, 6, 8)

scala> list.sortBy(x => x) res4: List[Int] = List(3, 6, 8)

scala> list.sortBy(x => - x) res5: List[Int] = List(8, 6, 3)

scala> val wds = List(("a",1),("c",4),("t",2)) wds: List[(String, Int)] = List((a,1), (c,4), (t,2))

scala> wds.sortBy(x => x._2) res6: List[(String, Int)] = List((a,1), (t,2), (c,4))

scala> wds.sortBy(x => - x._2) res7: List[(String, Int)] = List((c,4), (t,2), (a,1))

scala> wds.sortWith((x, y) => x._2 > y._2) res8: List[(String, Int)] = List((c,4), (t,2), (a,1))

分组(grouped)

scala> list.grouped(2).toList res9: List[List[Int]] = List(List(3, 6), List(8))

scala> list.grouped(1).toList res10: List[List[Int]] = List(List(3), List(6), List(8))

折叠(fold,foldLeft,foldRight)

scala> list.fold(0)((x, y) => x + y) res11: Int = 17

scala> list.fold(0)(_ + _) res13: Int = 17

scala> list.foldLeft(0)(_ - _) res14: Int = -17

scala> list.foldRight(0)(_ - _) res15: Int = 5

反转(reverse)

scala> list.reverse res17: List[Int] = List(8, 6, 3)

聚合(reduce,aggregate)

scala> list.reduce((x, y) => x + y) res18: Int = 17

scala> list.aggregate(0)(_ + _,_ + _) res1: Int = 17

合并(union)

scala> val list2 = List(7,3,1) list2: List[Int] = List(7, 3, 1)

scala> list.union(list2) res2: List[Int] = List(3, 6, 8, 7, 3, 1)

交集(intersect)

scala> list.intersect(list2) res3: List[Int] = List(3)

区别(diff)

scala> list.diff(list2) res4: List[Int] = List(6, 8)

组合成元组(zip)

scala> list.zip(list2) res5: List[(Int, Int)] = List((3,7), (6,3), (8,1))

格式化字符串(mkString)

scala> list.mkString("|") res6: String = 3|6|8

scala> list.mkString("\t") res7: String = 3 6 8

截取(slice)

scala> list.slice(1,3) res8: List[Int] = List(6, 8)

scala> list.slice(1,list.length) res10: List[Int] = List(6, 8)

求和(sum)

scala> list.sum res11: Int = 17

Set方法

不可变Set

scala> val set = Set(1,5,5,8) set: scala.collection.immutable.Set[Int] = Set(1, 5, 8)

可变Set(HashSet)

scala> import collection.mutable.HashSet import collection.mutable.HashSet

scala> val hset = HashSet(1,4,7) hset: scala.collection.mutable.HashSet[Int] = Set(1, 7, 4)

scala> hset.add(5) res12: Boolean = true

scala> hset res13: scala.collection.mutable.HashSet[Int] = Set(1, 5, 7, 4)

scala> hset.remove(1) res14: Boolean = true

scala> hset res15: scala.collection.mutable.HashSet[Int] = Set(5, 7, 4)

scala> hset.-=(5) res9: hset.type = Set(7, 4)

scala> hset ++ Set(0,8) res10: scala.collection.mutable.HashSet[Int] = Set(0, 7, 4, 8)

scala> hset res11: scala.collection.mutable.HashSet[Int] = Set(7, 4) 此时原来的hset是无变化的

scala> hset ++= Set(0,8) res12: hset.type = Set(0, 7, 4, 8)

scala> hset res13: scala.collection.mutable.HashSet[Int] = Set(0, 7, 4, 8) 此时原来的hset是有变化的

不可变Map

scala> val mp = Map[String, Int]("a" -> 1) mp: scala.collection.immutable.Map[String,Int] = Map(a -> 1)

可变Map

scala> import collection.mutable.HashMap import collection.mutable.HashMap

scala> val mmp = HashMap[String, Int]() mmp: scala.collection.mutable.HashMap[String,Int] = Map()

scala> mmp.put("bb",8) res0: Option[Int] = None

scala> mmp res1: scala.collection.mutable.HashMap[String,Int] = Map(bb -> 8)

scala> mmp += "name" -> 100 res2: mmp.type = Map(bb -> 8, name -> 100)

添加元组

scala> mmp += (("xx",98)) res3: mmp.type = Map(bb -> 8, name -> 100, xx -> 98)

删除Key

scala> mmp.remove("xx") res4: Option[Int] = Some(98)

scala> mmp res5: scala.collection.mutable.HashMap[String,Int] = Map(bb -> 8, name -> 100)

scala> mmp.-=("name") res6: mmp.type = Map(bb -> 8)

通过Key获取value

scala> mmp.get("bb") res8: Option[Int] = Some(8)

scala> mmp.get("bb").get res9: Int = 8

如果没有Key,get就获取不到值

scala> mmp.get("aa") res10: Option[Int] = None

scala> mmp.get("aa").get java.util.NoSuchElementException: None.get at scala.None$.get(Option.scala:347) at scala.None$.get(Option.scala:345) ... 32 elided

通过getOrElse可以在没有Key的情况下,获取一个默认值,map本身不变;如果Key存在,则直接返回value.

scala> mmp.getOrElse("aa",0) res12: Int = 0

scala> mmp res13: scala.collection.mutable.HashMap[String,Int] = Map(bb -> 8)

scala> mmp.getOrElse("bb",0) res14: Int = 8

其中Some是一个样例类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package scala
@scala.SerialVersionUID(value = 1234815782226070388)
final case class Some[+A](val x : A) extends scala.Option[A] with scala.Product with scala.Serializable {
  def isEmpty : scala.Boolean = { /* compiled code */ } //这里是false
  def get : A = { /* compiled code */ }  //这里就是x
}

他有一个get方法

scala> Some(100) res15: Some[Int] = Some(100)

scala> Some(100).get res16: Int = 100

元组(元组中无论有多少个值,他在函数式编程中都是一个变量)

scala> val tuple = (1,true,"xx",Unit) tuple: (Int, Boolean, String, Unit.type) = (1,true,xx,object scala.Unit)

scala> tuple._3 res17: String = xx

scala> tuple._2 res18: Boolean = true

scala> tuple._4 res19: Unit.type = object scala.Unit

元组迭代器

scala> tuple.productIterator res20: Iterator[Any] = non-empty iterator

scala> tuple.productIterator.toList res21: List[Any] = List(1, true, xx, object scala.Unit)

scala> tuple.productIterator.foreach(println) 1 true xx object scala.Unit

对偶元组

scala> val tp1 = ("word", 4) tp1: (String, Int) = (word,4)

scala> tp1.swap //交换元素 res30: (Int, String) = (4,word)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Scala学习一
1.集合操作练习 //创建一个List val lst0 = List(1,7,9,8,0,3,5,4,6,2) //将lst0中每个元素乘以10后生成一个新的集合 lst0.map(x => x*10 ) OR lst0.map(_*10 ) //将lst0中的偶数取出来生成一个新的集合 lst0.filter(x => x%2==0) lst0.filter(x => x%2==0).map(_*5) //将lst0排序后生成一个新的集合 lst0.sorted lst0.sortBy(x => x
sparkle123
2018/04/28
1.2K0
Scala:数据结构
5、设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后根据这个映射构建另一个新映射,采用同一组键,但是价格上打9折。
Java架构师必看
2021/08/12
3350
Scala入门与进阶(五)- Scala数组
5. Scala数组 1. 定长数组 scala> val a = new Array[String](5) a: Array[String] = Array(null, null, null, null, null) scala> val b = Array("a","b","c") b: Array[String] = Array(a, b, c) scala> b.length res0: Int = 3 scala> val b = Array(1,2,3) b: Array[Int] = A
Meet相识
2018/09/12
5170
Scala随笔
Scala混入特质 package com.jmy import java.util import scala.io.StdIn object ObjectDemo01 { def main(args: Array[String]): Unit = { // 单例模式懒汉式 var demo: ScalaDemo = ScalaDemo.getIntance() var demo1: ScalaDemo = ScalaDemo.getIntance() println
姜同学
2022/10/27
2320
Spark基础-scala学习(五、集合)
集合 scala的集合体系结构 List LinkedList Set 集合的函数式编程 函数式编程综合案例:统计多个文本内的单词总数 scala的集合体系结构 scala中的集合体系主要包括:Iterable、Seq、Set、Map。其中Iterable是所有集合trait的根trait。这个结构与java的集合体系非常相似 scala中的集合是分成可变和不可变两类集合的,其中可变集合就是说,集合的元素可以动态修改,而不可变集合的元素在初始化之后,就无法修改了。分别对应scala.collection.m
老梁
2019/09/10
5660
Scala 高阶(七):集合内容汇总(上篇)
Scala中的集合与Java中的集合相类似,但是又有很多的改变,接下来我们开启Scala集合篇的学习历程吧!
百思不得小赵
2022/12/01
9930
Scala 高阶(七):集合内容汇总(上篇)
scala 集合详细
在scala 中元组可以容纳不同类型元素的类,元组是不可变的,用于函数返回多个值.
Tim在路上
2020/08/04
9120
机器学习:如何快速从Python栈过渡到Scala栈
我之前的技术栈主要是Java、Python,机器学习方面主要用到是pandas、numpy、sklearn、scipy、matplotlib等等,因为工作需要使用spark,所以理所应当的开始学习pyspark;
HoLoong
2020/10/20
1.8K0
机器学习:如何快速从Python栈过渡到Scala栈
Scala,一门「特立独行」的语言!
入门 Spark 的路上很难不接触 Scala 。Scala 似乎是为 java 提供了很多『类似函数式编程』的语法糖,这里记录一下这个语言独特的地方分享给读者朋友们。
Piper蛋窝
2021/07/23
4410
Scala,一门「特立独行」的语言!
Scala的函数
----------目录--------------------------------------------------------- 1.Scala简介和安装 2.Scala语法介绍 3.Scala的函数 4.Scala中的集合类型 ------------------------------------------------------------------------------------------------------------- Scala的函数 1、函数的声明     scala
云飞扬
2018/05/11
1.4K0
Scala 【 5 数组常见操作和 Map 】
数组的常见操作 val a = Array(1,2,3,4,5) //数组求和 val sum = a.sum //获取数组的最大值 val max = a.max //对数组进行排序 scala.until.Sorting.quickSort(a) //获取数据的所有元素内容 a.mkString //用符号分隔开 a.mkString(",") //加上左右符号 a.mkString("<",",",">") //toString 函数 a.toString b.toString 使用 yield 和函
Lokinli
2023/03/09
3440
Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: 1:声明val变量:可以使用val来声明变量,用来存放表达式的计算结果,但是常量声明后是无法改变它的值的,建议使用val来声明常量; 声明var变量:如果要声明可以改变的引用,可以使用var变量,声明的常量的值可以改变。 3:指定类型:无论声明val变量还是声明var变量。都可以手动指定其类型,如果不指定,scala会自动根据值,进行类型的推断;
别先生
2018/04/02
1.5K0
Scala语法笔记
JAVA中,举例你S是一个字符串,那么s(i)就是该字符串的第i个字符(s.charAt(i)).Scala中使用apply的方法
用户3003813
2018/09/06
1.2K0
Scala语法笔记
带你快速掌握Scala操作———(3)
创建变长数组,需要提前导入ArrayBuffer类 import scala.collection.mutable.ArrayBuffer
刘浩的BigDataPath
2021/04/13
2K0
带你快速掌握Scala操作———(3)
Spark基础-scala学习(一、入门)
Scala解析器的使用 REPL:Read(取值)-> Evaluation(求值)-> Print(打印)->Loop(循环)。scala解析器也被称为REPL,会快速编译scala代码为字节码,然后交给JVM执行 val result = 1 设置变量不可变 var result = 2 可变的变量 val name: String = null 声明变量类型 val name: Any = "leo" val name1,name2:String = null 声明多个变量 val num1,num2
老梁
2019/09/10
7180
学好Spark必须要掌握的Scala技术点
Scala是以JVM为运行环境的面向对象的函数式编程语言,它可以直接访问Java类库并且与Java框架进行交互操作。
大数据学习与分享
2020/08/10
1.6K0
学好Spark必须要掌握的Scala技术点
Scala学习笔记(三)Scala的基础语法总结
Scala的基础语法 继上一篇的基础语法之后,我又整理了一些个人学习过程中认为比较重要的语法。 1. if/else 表达式 1.1 替代三目运算符 先用 Java 来写一段三目运算符的代码 int
fengzhizi715
2018/08/24
1.4K0
Scala学习笔记
大数据框架(处理海量数据/处理实时流式数据) 一:以hadoop2.X为体系的海量数据处理框架         离线数据分析,往往分析的是N+1的数据         - Mapreduce             并行计算,分而治之             - HDFS(分布式存储数据)             - Yarn(分布式资源管理和任务调度)             缺点:                 磁盘,依赖性太高(io)                 shuffle过程,map将数据写入到本次磁盘,reduce通过网络的方式将map task任务产生到HDFS         - Hive 数据仓库的工具             底层调用Mapreduce             impala         - Sqoop             桥梁:RDBMS(关系型数据库)- > HDFS/Hive                   HDFS/Hive -> RDBMS(关系型数据库)         - HBASE             列式Nosql数据库,大数据的分布式数据库  二:以Storm为体系的实时流式处理框架         Jstorm(Java编写)         实时数据分析 -》进行实时分析         应用场景:             电商平台: 双11大屏             实时交通监控             导航系统  三:以Spark为体系的数据处理框架         基于内存            将数据的中间结果放入到内存中(2014年递交给Apache,国内四年时间发展的非常好)         核心编程:             Spark Core:RDD(弹性分布式数据集),类似于Mapreduce             Spark SQL:Hive             Spark Streaming:Storm         高级编程:             机器学习、深度学习、人工智能             SparkGraphx             SparkMLlib             Spark on R Flink
曼路
2018/10/18
2.6K0
Scala Turtuial-容器(集合)类型
集合 scala的集合分为可变集合和不可变集合,其中可变集合的增删改查都是作用于它本身;而不可变集合的增删改操作返回的是一个新的集合,原不可变集合保持不变。函数式编程常使用不可变集合,scala默认使用的也是不可变集合。他们对应的包分别为:scala.collection.immutable(不可变)和scala.collection.mutable(可变)。 常见的可变集合: ArrayBuffer,ListBuffer,LinkedList,DoubleLinkedList,MutableList,Qu
吕海峰
2018/04/03
1.3K0
01.Scala:开发环境搭建、变量、判断、循环、函数、集合
早期,scala刚出现的时候,并没有怎么引起重视,随着Kafka和Spark这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala的主要优势是它的表达性。
Maynor
2021/04/09
4.1K0
相关推荐
Scala学习一
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验