Map操作有map,flatMap和collect,它们可以通过对容器中的元素进行某些运算来生成一个新的容器。...元素测试(Element test)包括有exists,forall和count,它们可以用一个给定论断来对容器中的元素进行判断。...排序操作(sorted, sortWith, sortBy)根据不同的条件对序列元素进行排序。...比较(startsWith, endsWith, contains, containsSlice, corresponds)用于对两个序列进行比较,或者在序列中查找某个元素。...而ArrayBuffer依赖数组(Array),能快速地转换成数组。 map 查询类操作:apply、get、getOrElse、contains和DefinedAt。
---- 数组 重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据。...在Scala中, 数组也是一个类, Array类, 存放的内容通过泛型来定义, 类似java中List的定义 语法 // 通过指定长度定义数组 val/var 变量名 = new Array[元素类型]...以下为常用的几个算法: 求和——sum方法 求最大值——max方法 求最小值——min方法 排序——sorted方法 求和 数组中的sum方法可以将所有的元素进行累加,然后得到结果 示例 定义一个数组,...) a: Array[Int] = Array(4, 1, 2, 4, 10) scala> a.min res51: Int = 1 排序 数组的sorted方法,可以对数组进行升序排序。...而reverse方法,可以将数组进行反转,从而实现降序排序 示例 定义一个数组,包含以下几个元素(4,1,2,4,10) 对数组进行升序排序、降序排序 参考代码 // 升序排序 scala> a.sorted
往期回顾 大数据之脚踏实地学14--Scala自定义函数 大数据之脚踏实地学13--Scala控制流 大数据之脚踏实地学12--Scala数据类型与运算符 前言 Scala中的数组是一种非常重要的数据结构...在本期的内容分享中,我们将针对数组作基本的介绍,内容包含: 数组的创建 数组的操作 数组的创建 数组分定长数组和变长数组,定长数组是指在构建数组之前就确定了数组中所包含的元素个数,而变成数组则不确定数组的元素个数...会根据传入的值进行类型推导),但使用第二种方法创建数组则必须指定具体的数据类型和元素个数。...,我们可以在容器的基础上对元素做一些基本的操作,包括数组元素的增、删、改、查、筛选、排序、排重等。...举例 scala> var A2 = ArrayBuffer[String]() // 在变长数组A2中增加单个元素 scala> A2 += "One" scala> println("A2 = "
函数和方法的区别 方法定义在类中可以实现重载,函数不可以重载。 方法是保存在方法区,函数是保存在堆中。 定义在方法中的方法可以称之为函数,不可以重载。 方法可以转成函数, 转换语法: 方法名 _。...private为私有权限,只在类的内部和伴生对象中可用。 protected为受保护权限,Scala中受保护权限比Java中更严格,同类、子类可以访问,同包无法访问。...中的Map和Java类似,**也是一个散列表,它存储的内容也是键值对(key-value)**映射。...sorted:对一个集合进行自然排序,通过传递隐式的Ordering。...sortBy:对一个属性或多个属性进行排序,通过它的类型。 sortWith:基于函数的排序,通过一个comparator函数,实现自定义排序的逻辑。
new 在JVM中,Scala的Array是以Java数组方式实现,上述中的数组在JVM中的类型为java.lang.String[] , Int,Double或其它与java中基本类型对应数组都是基本类型数组...,Array(1,2,3,4,5) 在JVM中就是一个Int[] 二 :变长数组:数组缓冲 对于变长数组,Java中有ArrayList Scala中的等效数据结构为ArrayBuffer import...,返回所有小于(但不包括)上限的数字,比如 0 util 10 返回的是 Range(0,1,2,3,4,5,6,7,8,9) 数组转换 在Scala中对数组进行转换时很简单的,这些转换不会修改原始数组...中有内置的函数来处理一些业务运算中的求和与排序 Array( 1,3,4,5 ).sum // 13 对ArrayBuffer同样适用 要使用sum方法,元素类型必须是数值类型,要么是整型,要么是浮点数或者...BigInteger、BigDecimal 同样 Min和max 输出数组或数组缓冲中最大和最小元素 ArrayBuffer("a","aa","aaa").max // "aaa" sorted 方法将数组或数组缓存排序并返回经过排序的数组或者数组缓冲
没有基本数据类型与包装类型的概念,统一都是类 使用以上类型,直接就恶意调用大量的函数,例如,1.toString(),1.to(10) 在scala中,操作符比如+-*/%&|^>><<等其实是数据类型的函数...,比如1+1可以写作1.+(1);例如1.to(10) 又可以写作1 to 10 scala中没提供++、--操作符,只能用+=和-=。...中使用类名()的形式其实就是类名.apply()的缩写,来创建类对象,而不是new 类名()的方式 例如"Hello World"(6)因为StringOps类中有def apply(n: Int):Char...res16: scala.collection.mutable.HashMap[Int,String] = Map(50 -> Tom, 30 -> Leo, 24 -> jack) Map排序 //自动对...Map的key排序 scala> val ages = scala.collection.immutable.SortedMap("leo"->30,"alice"->14,"jen"->25) ages
1、定义变量 var 可变 val 不可变,相当于Java中的final Unit相当于Java中的void,以()表示 scala> val a = println("ddd") ddd a: Unit...[Int] = ArrayBuffer(1, 2, 3, 4, 5, 6) /** * Array: * 内容都可变 * 长度可变数组(ArrayBuffer)和长度不可变数组Array...* * 在Scala中,集合分为可变集合(mutable)和不可变集合(immutable) * 可变集合指的是:长度可变,内容可变 * 不可变集合:长度不可变,内容也不可变...:347) at scala.None$.get(Option.scala:345) ... 32 elided 通过getOrElse可以在没有Key的情况下,获取一个默认值,map本身不变...Some[Int] = Some(100) scala> Some(100).get res16: Int = 100 元组(元组中无论有多少个值,他在函数式编程中都是一个变量) scala> val
注意,在scala中没有提供++,--操作,我们只可以使用+=和-=操作符; 7:apply函数:在scala中apply函数是非常特殊的一种函数,在Scala的object中,可以声明apply函数。...3:Scala之循环控制学习笔记: 1:while do循环,scala中的while do循环,基本和Java相同。...的异常:在scala中,异常处理和捕获机制与Java类似。...,在Scala中,如果需要类似于Java中ArrayList这种长度可变的集合类,则可以使用ArrayBuffer; 如果不想每次都使用全限定名,则可以预先导入ArrayBuffer类:...Array和ArrayBuffer可以互相进行转换:arr.toArray;arr.toBuffer 3:遍历Array和ArrayBuffer 使用for循环和until遍历Array
Array[Int] = Array(0,0,0,0,0,0,0,0,0,0) //定义一个长度为10的String类数组 scala> val strArray = new Array[String]...Scala中的等效数据结构为ArrayBuffer //导入可变包,Scala中的可变集合都是放在mutable中,使用时要导入 scala> import scala.collection.mutable.ArrayBuffer...3、变长数组和定长数组转换 //变长转换长定长 scala > arrayBuffer.toArray //Array(2, 7) //定长转换成变长 scala>res7.toBuffer //ArrayBuffer...Scala也提供了一个和Java增强for循环类似的for //增强for for(i arrayBuffer) println(i + ": " + a(i)) 5、数组转换 在《Scala...res89: Int = 1 //排序 //sorted方法将数组或数组缓冲排序并返回经过排序的数组或数组缓冲,原始数组被保留 scala>val b = ArrayBuffer(1, 7, 2,
看大家对scala和spark的程度,但是至少会连载到这个读书笔记完成,第一篇内容篇幅较短,主要想了解大家对scala的热情。如果大家需要,后面会继续连载spark的源代码分析。...: scala> import scala.collection.mutable.ArrayBuffer scala> val ab = ArrayBuffer[Int]() scala> ab +=...( 1, 2, 3 ) //在末尾添加多个元素 //ArrayBuffer(1, 2, 3) 也可以对数组做插入和移除操作,但是并不高效,因为后面的元素会进行平移,使用的命令如下 scala> ab.insert...scala> Array(1, 6, 4, 3).sum 排序需要说哪一个sorted()方法 val ab = ArrayBuffer(1, 7, 2, 9) val abSorted = ab.sorted...映射也可以构建出可变和不可变映射两类。
定长数组 如果你需要一个长度不变的数组,可以使用Scala中的 Array....中,Scala的Array以Java数组方式实现. 2....数组转换 从一个数组(数组缓冲)出发,以某种方式对它进行转换是很简单的.这些转换操作不会修改原是数组,而是产生一个全新的数组: val a = Array(1,2,3,4) val result =...% 2 == 0) yield 2 * elem 上面实例中对每个偶数元素翻倍,并丢掉奇数元素. 5....a = ArrayBuffer(6,1,7,4) val asorted = a.sortWith(_ > _) // ArrayBuffer(7, 6, 4, 1) sorted方法将数组或数组缓冲排序并返回经过排序的数组或数组缓冲
---- 数组 scala中数组的概念是和Java类似,可以用数组来存放一组数据。scala中,有两种数组,一种是定长数组,另一种是变长数组。...NOTE] 在scala中,数组的泛型使用 [] 来指定 使用 () 来获取元素 示例1 定义一个长度为100的整型数组 设置第1个元素为110 打印第1个元素 参考代码 ?...NOTE] 创建变长数组,需要提前导入ArrayBuffer类 import scala.collection.mutable.ArrayBuffer 示例1 定义一个长度为0的整型变长数组...---- 排序 数组的 sorted 方法,可以对数组进行升序排序。而reverse方法,可以将数组进行反转,从而 实现降序排序。...示例 定义一个数组,包含以下几个元素(4,1,2,4,10) 对数组进行升序排序、降序排序 参考代码 ?
取前两名 取到的数据是scala中进行排序的 //先分组 然后在组内进行排序 这里的ComoactBuffer是迭代器,继承了序列,然后迭代器转换成List进行排序 //在某种极端情况下...,一个学科的数据放到一个RDD中 for(sb <- subjects){ //对所有数据进行过滤 val filtered = reduced.filter(_._1...._1 == sb) //在一个学科中进行排序(RDD排序是内存+磁盘) val sorted = filtered.sortBy(_._2,false).take(2)...对聚合后的RDD进行自定义分区 val sbPartitioner = reduced.partitionBy(subjectPartitiioner) //重新分区后,在每个分区中进行排序...class SubjectPartitioner(subjects:Array[String]) extends Partitioner{ //在new的时候执行,在构造器中执行 //String
访问数组方式:访问arrStr第一个元素,arrStr(1)即可 贰 变长数组(即数组缓冲): java中有ArrayList和scala中的ArrayBuffer等效;但是ArrayBuffer更加强大...= ArrayBuffer(1,3,4,-1,-4) arrbuff1 += 23 //用+=在尾端添加元素 arrbuff1 += (2,3,4,32) //同时在尾端添加多个元素 arrbuff1...scala则更加统一,通常情况,我们可以用相同的代码处理这两种数据结构,for(…) yield 循环创建一个类型和原集合类型相同的新集合。for循环中还可以带守卫:在for中用if来实现。....sum //对arrbuff1元素求和 Array("asd","sdf","ss").max //求最大元素 arrbuff1.sorted(_ 排序 arrbuff1...数组和java互操作: 由于scala数组是用java数组实现的,所以可以在java和scala之间来回传递,引入scala.collectin.JavaConversion ,可以在代码中使用scala
它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。...> List(1,2,3,4,5,6,7,8,9).filter(_ % 2 == 0) res8: List[Int] = List(2, 4, 6, 8) 17.7 排序 在scala集合中,可以使用以下几种方式来进行排序...sorted默认排序 sortBy指定字段排序 sortWith自定义排序 17.7.1 默认排序 | sorted 示例 定义一个列表,包含以下元素: 3, 1, 2, 9, 7 对列表进行升序排序...自定义排序,根据一个函数来进行自定义排序 方法签名 def sortWith(lt: (A, A) ⇒ Boolean): List[A] 方法解析 sortWith方法 API 说明 参数 lt:...,包含以下元素:2,3,1,6,4,5 使用sortWith对列表进行降序排序 参考代码 scala> val a = List(2,3,1,6,4,5) a: List[Int] = List(2,
6、大家注意 Scala 中的 Map 体系有一个SortedMap,说明 Scala 的 Map 可以支持排序。 ...2、在 Seq 集合中,增加了 Buffer 集合,将来开发中,我们常用的有 ArrayBuffer 和 ListBuffer。 3、如果涉及到线程安全可以选择 Syn.. 开头的集合。 ...和 Java 类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala 中不可变的 Map 是有序的,可变的 Map 是无序的。 ...Scala 中,有可变 Map (scala.collection.mutable.Map) 和 不可变 Map(scala.collection.immutable.Map)。...方式3-创建空的映射 val map3 = new scala.collection.mutable.HashMap[String, Int] 方式4-对偶元组 即创建包含键值对的二元组,和第一种方式等价
Scala中的List默认是不可变的,这是函数式编程的基石。...maplist.map(x=>x*2)将集合中的每个元素进行转换,返回一个新的集合。...sortedsortBysortWithlist.sortBy(x=>-x)提供多种排序方式:默认排序、指定字段排序、自定义比较函数排序。...groupBylist.groupBy(x=>if(x%2==0)"even"else"odd")按指定条件对元素进行分组,返回一个Map。...reducelist.reduce((a,b)=>a+b)对集合元素进行聚合计算(从左到右),将多个元素合并为一个。
[String, Float]): ArrayBuffer[(String, Float)] = { val array = ArrayBuffer[(String, Float)]()...d在算法初始阶段是没有的,上述公式中d设置为1此处会发现6的权重为0,就出现了孤立页面,这时候便引进了阻尼系数d,d一般设值为0.85 修改之后公式(0.15f + x._2._1.get * 0.85f...总结 已经完成了pageRank算法的scala代码实现工程,对pageRank算法的认知也更加深刻。...算法么,都存在自身的优缺点,pageRank算法的它与查询无关,也就是说无论是谁在百度或者谷歌无搜索关键词返回结果应该是一样的,但是有了搜索词,会在整个排序中取出部分结果重新排序展示给用户,这些就是搜索引擎所做的事情了...pageRank算法设计思想类似于itembase协同过滤算法中M/N的设计,大多数人认为对的通常都是对的。搜索推荐真是一家人!!!
> x + y add: (Int, Int) => Int = scala> add(1,2) res3: Int = 3 方法和函数的区别 方法是隶属于类或者对象的,在运行时,它是加载到JVM...类 import scala.collection.mutable.ArrayBuffer 语法 创建空的ArrayBuffer变长数组,语法结构: • val/var a = ArrayBuffer...List具备以下性质: 可以保存重复的值 有先后顺序 在scala中,也有两种列表,一种是不可变列表、另一种是可变列表 定义 不可变列表就是列表的元素、长度都是不可变的。...(a2),表示获取a1在a2中不存在的元素 scala> val a1 = List(1,2,3,4) a1: List[Int] = List(1, 2, 3, 4) scala> val a2 =...它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。
Scala 中的集合是分成可变和不可变两类集合的,其中可变集合就是说,集合的元素可以动态修改,而不可变集合的元素在初始化之后,就无法修改了。...分别对应 scala.collection.mutable 和 scala.collection.immutable 两个包。 ...ArrayBuffer 就类似于 Java中的 ArrayList。 List List 代表一个不可变的列表。 ...来进行排序。..."a","girlfriend").foreach(println(_)) // zip 练习:对学生姓名和学生成绩进行关联 List("Li", "Hcy", "chy").zip(List(100