val arr=Array((1,“a”,123),(2,“b”,12),(3,“c”,-50))//id,name,age。需求:用函数取age最大值最小值和平均值。
scala> val arr=Array((1,“a”,123),(2,“b”,12),(3,“c”,-50))
scala> arr
res02: Array[(Int, String, Int)] = Array((1,a,123), (2,b,12), (3,c,-50))
方法一:(取单个值)
scala> arr.map(a=>a._3).max
res03: Int = 123
scala> arr.map(a=>a._3).min
res04: Int = -50
scala> arr.map(a=>a._3).sum/arr.size
res05: Int = 28
方法二:(取单个值所在的元组)
min(),max()默认取数组每个元组的第一个元素的最值,不适合题目需求,故需要用到minBy(),maxBy()
scala> arr.minBy(a=>a._3)
res50: (Int, String, Int) = (3,c,-50)
scala> arr.maxBy(a=>a._3)
res51: (Int, String, Int) = (1,a,123)
注:val map = Map((“b”,2),(“a”,1),(“d”,4)),这里调用的方法是使用map调用的
1.
最大值
最小值
方法:max、min、maxBy、minBy
def minBy[B](f: A => B)(implicit cmp: Ordering[B]): A = {
if (isEmpty)
throw new UnsupportedOperatio...
scala
Version := "2.11.12"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
scala
的版本如果不是2.11.12,spark的版本不是2.1.0.否则很可能就会造成不对应的结果
下面是用
scala
求最大
最小值
的程序
import org.apache.s
scala
求次大值和
最大值
!
def main(args:
Array
[String]): Unit = {
val arr =
Array
(3, -6, 2, 0, 9, 5, 8, 1,213,45,32,3,2,3)
val result = qcMax(arr)
println(s"次大值:${result._1},
最大值
:${result._2}")
//思路:先给ci和max赋予数组的
最小值
,然后让数组的每一个值先和ci比较,如
集合之间合并类
++ ++:/union
+=增加一个string类型的集合,常用于map/
元组
/
Array
Buffer[T] var m=Map(“a”->1);m+=(“j”->0)
集合增加
元素
+: :+ padTo 后补齐
集合去除
元素
drop 去除前n个 dropRight dropWhile
patch
update/updated
集合
取
值(单个、头尾、部分)
apply
head/headOption 返回集合第一个
元素
tail
取
出
本文
scala
使用的版本是2.11.7第一章 基础1.1 基础常量和变量以val定义的值是一个常量,即无法改变它的内容:
scala
> val counter: Int = 0
counter: Int = 0以var定义的值是变量,可以改变它的内容:
scala
> var v = 0
v: Int = 0
scala
> v = 10
v: Int = 10常用类型7种数值类型:Byte、Char、Sho
1. 类和对象
Scala
是一种
函数
式的面向对象语言, 它也是支持面向对象编程思想的,也有类和对象的概念。我们依然可以基于
Scala
语言来开发面向对象的应用程序。
1.1 相关概念
什么是面向对象?
面向对象是一种编程思想, 它是基于面向过程的, 强调的是以对象为基础完成各种操作.
面向对象的三大思想特点是什么?
1. 更符合人们的思考习惯.
2. 把复
val a = List(1.0,2.0,3.0,4.0,5.0)
val b = a.map(x=>(x,1.0)).reduce((x,y)=>(x._1+y._1,x._2+y._2))
val avg = b._1/b._2
下图是运行结果
注意:val b = a.map(x=>(x,1.0)).reduce((x,y)=>(x._1+x._2,y._1+y._2))这样求值
++ count hasDefiniteSize maxBy sameElements toBuffer
++: deep head min scan toIndexedSeq
+: diff headOption
def findMinMax(list: List[String]): (String, String) = {
val max = list.max
val min = list.min
(max, min)
val myList = List("apple", "banana", "cherry", "date", "eggplant")
val (max, min) = findMinMax(myList)
println(s"Max: $max, Min: $min") // 输出:Max: eggplant, Min: apple
在这个示例
中
,我们定义了一个名为`findMinMax`的方法,它接受一个类型为`List[String]`的参数`list`,并返回一个类型为`(String, String)`的
元组
,其
中
第一个
元素
是该
列表
中
的
最大值
,第二个
元素
是
最小值
。
我们在主
函数
中
创建了一个字符串
列表
`myList`,并将其传递给`findMinMax`方法。我们使用`val (max, min) = findMinMax(myList)`行来将
元组
中
的第一个和第二个
元素
分别赋值给`max`和`min`变量。最后,我们使用`println`
函数
输出结果,显示
列表
中
的最大和最小字符串。