Scala集合(四)】的更多相关文章

大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储技术现在比较经典方案是使用Hadoop,不过也很多方案采用Kafka.  2.对数据集合的操作技术,目前全球最火爆的是Spark.  Spark的框架实现是语言是Scala,首选应用程序开发语言也是Scala,所以Scala对集合以及集合操作的支持就非常重要且非常强大,因此Spark中对很多数据操作算子和Scala中对集合的操作是一样的.  Scala中数据的创建与操作…
scala集合转化为DS/DF case class TestPerson(name: String, age: Long, salary: Double) val tom = TestPerson(,35.5) val sam = TestPerson(,40.5) val PersonList = mutable.MutableList[TestPerson]() PersonList += tom PersonList += sam val personDS = PersonList.to…
Java 集合 : 数据的容器,可以在内部容纳数据  List : 有序,可重复的  Set : 无序,不可重复  Map : 无序,存储K-V键值对,key不可重复 scala 集合 : 可变集合(ArrayList) & 不可变集合(数组)  String(不可变字符串), (StringBuilder, StringBuffer)(可变字符串) 集合的基本方法 val list: List[Int] = List(1,2,3,4) // 反转集合 //println(list.revers…
Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更加有助于我们学习Scala和Spark: List,Map,Set的一些api的用法如下:  /** * Scala 集合测试 */ def collectionTest(): Unit ={ val map =Map("red"->"红色","gree…
Scala集合的主要特质 Iterator,用来访问集合中所有元素 val coll = ... // 某种Iterable val iter = col.iterator while(iter.hasNext) iter.next() Seq是一个有先后次序的值得序列,比如数组或列表.IndexSeq允许我们通过整型的下标快速访问任意元素,如ArrayBuffer是带下标的.Set是一组没有先后次序的值,在SortedSet中,元素以某种排过序的顺序被访问.Map是一组(K,V)对偶,Sort…
Scala集合 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变的和不可变的集合. 可变集合可以在适当的地方被更新或扩展.这意味着你可以修改,添加,移除一个集合的元素.而不可变集合类永远不会改变.不过,你仍然可以模拟添加,移除或更新操作.但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变. 集合中基本结构: 几种常用集合类型示例:   // 定义整型 List   val x = List(1, 2, 3, 4)       //…
集合!集合!一个现代语言平台上的程序员每天代码里用的最多的大概就是该语言上的集合类了,Scala的集合丰富而强大,至今无出其右者,所以这次再回过头再梳理一下. 本文原文出处:  还是先上张图吧,这是我找到的最好的一个关于Scala集合的图了,出自:http://lkumarjain.blogspot.co.id/2015/01/scala-collection-framework.html : 一致的构建风格 在Scala里我们使用一致的简洁的语法实例化一个集合,不管你使用的是一个Trait还是…
Scala列表 Scala列表与数组非常相似,列表的所有元素都具有相同的类型,但有两个重要的区别. 首先,列表是不可变的,列表的元素不能通过赋值来更改. 其次,列表表示一个链表,而数组是平的. 具有类型T的元素的列表的类型被写为List[T]. 尝试以下示例,这里列出了为各种数据类型定义的列表. // List of Strings val fruit: List[String] = List("apples", "oranges", "pears&quo…
今天在业务开发中遇到需要Scala集合转为Java集合的场景: 因为业务全部是由Scala开发,但是也避免不了调用Java方法的场景,所以将此记录下来加深记忆: import scala.collection.JavaConverters._ //需要导入这个包 val javaRequest: java.util.List[TAddShopRequest] = request.asJava//将Scala集合转为Java集合当作参数传入addShop方法 val res: DadaApiRes…
遍历集合可以使用迭代器iterator的那套迭代方式.Seq是一个有先后次序的序列,比如数组或列表.IndexedSeq可以通过下标进行任意元素的访问.例如ArrrayBuffer. Set是一组没有先后次序的值,在SortedSet中,元素以某种排过序的顺序被访问. Map是一组(键,值)对偶,SortedMap按照键的顺序访问实体 Scala集合有三个基本操作: head 返回集合第一个元素 tail 返回一个集合,包含除了第一元素之外的其他元素 isEmpty 在集合为空时返回true 可…
本课内容1.Spark中Scala集合操作鉴赏2.Scala集合操作实战 ------------------------------------------------------------------------------------------------------------------------ /** * 大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: * 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储现在比较经典的是使用Hadoop, * …
前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的,主要会介绍集合和函数. 注意噢,函数和方法是不一样的,方法是在类里面定义的,函数是可以单独存在的(严格来说,在scala内部,每个函数都是一个类) 一.scala集合介绍 还记得上一章介绍的object的apply方法吗,很多数据结构其实都用到了它,从而让我们可以直接用List(...)这样来新建…
1. 集合 集合主要有三种: Sequence Map Set sequence是一种线性元素的集合,可能会是索引或者线性的(链表).map是包含键值对的集合,就像Java的Map,set是包含无重复元素的集合. 除了这三个主要的集合类之外,还有其他有用的集合类型,如Stack, Queue和Range.还有其他一些用起来像集合的类,如元组.枚举.Option/Some/None以及Try/Success/Failure类. Scala通用的序列集合: 不可变(Immutable) 可变 索引(…
Scala二维数组的定义: val arr2 = Array.ofDim[String](2, 2) arr2(0)(0) = "aa" arr2(1)(0) = "bb" for(i <- 0 until arr2.length; j <- 0 until arr2(0).length){ println(arr2(i)(j)) } Scala不规则数组定义: val tri = new Array[Array[Int]](2) tri(0) = ne…
一.本章要点 Scala有十分易用的语言来创建,查询和遍历映射 你需要从可变和不可变的映射中做出选择 默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射 你可以很容易地在Scala映射和Java映射之间来回切换 元祖可以用来聚集值 二.构造映射(哈希表) 构造不可变映射: val scores=Map("Alice"->100,"Bob"->3,"Cindy"->8) 构造可变映射: val scores=scala…
使用 scala.collection.JavaConverters 与Java集合交互.它有一系列的隐式转换,添加了asJava和asScala的转换方法.使用它们这些方法确保转换是显式的,有助于阅读: import scala.collection.JavaConverters._ val list: java.util.List[Int] = Seq(1,2,3,4).asJava val buffer: scala.collection.mutable.Buffer[Int] = lis…
优先使用不可变集合.不可变集合适用于大多数情况,让程序易于理解和推断,因为它们是引用透明的( referentially transparent )因此缺省也是线程安全的. 使用可变集合时,明确地引用可变集合的命名空间.不要用使用import scala.collection.mutable._ 然后引用 Set ,应该用下面的方式替代: import scala.collections.mutable val set = mutable.Set() 这样就很明确在使用一个可变集合. 使用集合类…
scala常用函数操作 reduceLeft   是将集合的元素从左向右进行所需要的相应操作,图以减法为例展示,表达的算法是 : 1-2-3-4-5 例: (1 to 5).reduceLeft(_ - _)  结果为-13 ​      reduceRight  是将集合的元素从右向左进行所需要的相应操作,图以减法为例展示,表达的算法是 :1-(2-(3-(4-5))) 例:(1 to 5).reduceRight(_ - _) 结果为3 foldLeft  设定一个值,该值对集合从左向右进行…
1. 数组 1.1 定长数组 scala.Array 是定长的可变的索引型集合, JVM 中, Scala 的 Array 是以 Java 数组方式实现. String 对应 java.lang.String, Int, Double或其他与 Java 中基本类型对应数组都有基本类型数组, 比如说 Array(1, 2) 在 JVM 中就是一个 int[]. val arr1 = new Array[Int](10) val arr2 = Array(1, 3) // 调用apply方法 arr…
映射和元组 摘要: 一个经典的程序员名言是:"如果只能有一种数据结构,那就用哈希表吧".哈希表或者更笼统地说映射,是最灵活多变的数据结构之一.映射是键/值对偶的集合.Scala有一个通用的叫法:元组,即n个对象的聚集,并不一定要相同类型的.对偶不过是一个 n=2的元组,元组对于那种需要将两个或更多值聚集在一起时特别有用.本篇的要点包括: 01. Scala有十分易用的语法来创建.查询和遍历映射. 02. 你需要从可变的和不可变的映射中做出选择. 03. 默认情况下,你得到的是一个哈希映射,不过你…
将函数映射到集合 map方法 val names = List("Peter" , "Paul", "Mary") names.map(_.toUpperCase) // 等同于 for(n <- names) yield n.toUpperCase flatMap方法,如果函数产出一个集合,又想将所有值串联在一起 def ulcase(s:String) = Vector(s.toUpperCase(), s.toLowerCase())…
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark-1.6 一.字符串.数组.List.Set.Map.tuple tuple1.元组定义与列表一样,与列表不同的是元组可以包含不同类型的元素.元组的值是通过将单个的值包含在圆括号中构成的.2.创建元组与取值val tuple = new Tuple(1) 可以使用newval tuple2 = Tu…
1.List 基础操作 2.Set 基础操作 3. TreeSet 排序Set 4. 拉链操作 5. 流 import scala.collection.immutable.TreeSet import scala.util.Random /** * @author xwolf * @date 2017-04-25 15:26 * @since 1.8 */ object Collection { def main(args:Array[String]):Unit={ list() // set…
1.数据结构特点 Scala同时支持可变集合和不可变集合,不可变集合从不可变,可以安全的并发访问. 两个主要的包: 不可变集合:scala.collection.immutable 可变集合: scala.collection.mutable Scala优先采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本. 不可变集合继承层次: 可变集合继承层次: 2.数组 2.1.定义定长数组 我们可以定义一个固定长度大小和类型的定长数组 ,类型为Int的固定大小数组 val a…
____ 本文链接: https://www.cnblogs.com/senwren/p/Scala-Lis-2-Tuple.html —— Scala没有提供相应写法, 但迭代写法仍然可以做到. 有两种写法 1: object Xxx extends App{ val res = List(List("a", 2), List("c", 3) ) .map{_ match {case List(w,c)=> w->c } } println(res)…
Iterable 是序列(Seq), 集(Set) 映射(Map)的特质 序列式有序的集合如数组和列表 集合可以通过== 方法确定对每个对象最多包含一个 映射包含了键值映射关系的集合 列表缓存: 使用ListBuffer代替List 另一个理由是为了避免栈溢出的风险 数组缓存: ArrayBuffer需要先从可变集合包引用 scala.collection.mutable.ArrayBuffer val buf = new ArrayBuffer[Int]() 队列Queue:先进先出 clas…
Scala是函数式编程,这点在集合操作中大量体现.高阶函数,也就是能够接收另外一个函数作为参数的函数. 假如现在有一个需要是将List集合中的每个元素变为原来的两倍,现在来对比Java方式实现和Scala方式实现区别 Java方式实现,先将集合中的每个元素遍历出来,然后再乘以2,塞到另外一个集合中 ArrayList<Integer> list1 = new ArrayList<Integer>(); list1.add(3); list1.add(5); list1.add(7)…
package com.yz8 import org.junit.Test class test { @Test def test: Unit = { val ints = List(1,5,7,6,8) println(ints.head)//1 println(ints.tail)//List(5, 7, 6, 8) //判断集合是否为空 println(ints.isEmpty) println(ints==Nil) } @Test def test2(): Unit ={ val int…
sacala 关于集合常用的操作 map1.映射:对集合中的每一个元素进行执行某一项操作2.返回值类型,正常情况不变,原来集合是什么类型,就返回什么类型3.元素类型,根据我们函数的返回值类型 val f = (x: Int) => x * 10val arr: Array[Int] = Array(1, 2, 3, 6, 7, 9)//对上面数组的数字进行处理,每个数字乘以10//第一种方法val map1: Array[Int] = arr.map(t => t * 10)println(m…
一:List集合 1.创建 2.简单使用(两个部分) 3.Nill空集合 4.创建一个可变的list集合 二:Set 1.说明 无序,不重复 2.新建 3.可变…