[scala] scala 集合(⑧)】的更多相关文章

http://blog.csdn.net/pipisorry/article/details/52902549 Scala Collection Scala 集合分为可变的和不可变的集合. 可变集合可以在适当的地方被更新或扩展.这意味着你可以修改,添加,移除一个集合的元素. 而不可变集合类,相比之下,永远不会改变.不过,你仍然可以模拟添加,移除或更新操作.但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变. 集合类型的应用 1     Scala List(列表)List…
arrays :+ 5尾部   头部5 +: arrays TODO 声明不可变数组,不能删; 默认情况下,scala中集合的声明全都是不可变的 val arrays: Array[Int] = Array(1, 2, 3, 4) //增加 不可变使用伴生对象添加数 val newArrays1: Array[Int] = arrays :+5 //1,2,3,4,5 // 增加数据到集合的尾部,产生新的集合 val newArrays2: Array[Int] = 6+:arrays //6,…
留坑待填 使用scala.collection.mutable._期间,发现了当程序运行内存开销较多时,使用系统工具进行内存清理,然后程序报出了变量找不到.内存无法访问.数组访问越界,堆栈溢出等多种错误,但在手动内存清理操作过程中,程序运行正确.完整.猜测scala对可变集合的内存管理为动态管理且未使用独占式分配,导致在系统内存清理时将非垃圾数据进行清理,进一步导致程序无法正确访问变量和数据. <<<<<<<<<<<<<<…
1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala> val f = fun1 _ f: String => Unit = $$Lambda$1095/23837627@ae3764 scala> f("spark") spark 2.其他_的使用 package com.dtspark.scala.basics /**…
scala中有一些api设计的很人性化,集合的这几个操作是个代表: 交集: scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法 scala> Set(1,2,3) intersect Set(2,4) 并集: scala> Set(1,2,3) ++ Set(2,4) scala> Set(1,2,3) | Set(2,4) // |方法等同于union方法 scala> Set(1,2,3) union Set(…
欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a,b,c,d)中(b-a,c-b,d-c) 解法 val l1 = 1 to 10 toList val l2 = l1.tail l1.zip(l2).map(p=>(p._2 - p._1) 上述代码即可求出两两差值.代码含义稍作解释: tail表示一个集合中除首元素外的剩余元素,也是一个集合.…
一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组   1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[String](“s1”,”s2”,”s3”) /** * 创建数组两种方式: * 1.new Array[String](3) * 2.直接Array */ //创建类型为Int 长度为3的数组 val arr1 = new Array[Int](3) //创建String 类型的数组,直接赋值…
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…
概述 Scala的集合类能够从三个维度进行切分: 可变与不可变集合(Immutable and mutable collections) 静态与延迟载入集合 (Eager and delayed evaluation ) 串行与并行计算集合(Sequential and parallel evaluation ) 关于第一个维度我想我们不须要再介绍了. 关于第二维度.是这样解释的, 首先我们来解释一个概念:transformation,集合中有大量的操作都是把一个集合"转换"成还有一个…
[From] https://blog.csdn.net/gongxifacai_believe/article/details/81916659 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/gongxifacai_believe/article/details/81916659 1.Scala中的集合 Scala有一个非常通用丰富强大可组合的集合库:集合是高阶的,并拥有一大套操作方法.Scala的所有的集合类都可以在包 scala.collect…
对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterable <=> java.lang.Iterable scala.collection.Iterable <=> java.util.Collection scala.collection.Iterator <=> java.util.{ Iterator, Enumerat…
1.元组 定义方式:val tp=("nana',1,1.1) 特点:集合中的数据可以是不同类型的 最多只能放22个元素 取值:通过角标取值,这里的角标是从1开始的,元组名称._角标   tp._1   ("nana") 当出现数组长度不相同时,报错 对偶元组:val tp=("nana",1) 两个元素 拉链操作: zip 当出现数组长度不想同时,一一匹配,无则不匹配 2.数组 数组分为:不可变数组:长度不变,内容可变Array 可变数组:长度内容都可以…
Scala集合 一.数组 package top.ruandb.scala.Course04 object ArrayApp { def main(args: Array[String]): Unit = { //定义数组 val a = new Array[String](5) //直接定义 val b = Array("java","scala","bash","swift") val c=Array(1,2,3,4,5,…
一.List var x = List(1,2,3,4) //x:List[Int] = List(1, 2, 3, 4) var y = List("x","y","z") //y: List[String] = List(x, y, z) 0 :: x //res6: List[Int] = List(0, 1, 2, 3, 4) x ::: y //List[Any] = List(1, 2, 3, 4, x, y, z) scala>…
1. 定长数组 如果你需要一个长度不变的数组,可以使用Scala中的Array. val nums = new Array[Int](10) // 10个整数的数组 所有元素初始化为0 val strs = new Array[String](10) // 10个字符串的数组 所有元素初始化为null val s = Array("Hello", "World") // 长度为2的Array[String] 类型是推断出来的 s(0) = "GoodBye…
Object An object is a type of class that can have no more than one instance, known in object-oriented design as a singleton. Instead of creating an instance with a new keyword, just access the object directly by name. Objects provide similar "static&…
1.scala 函数定义 2.scala 高阶函数 3.匿名函数 4.柯里化 import scala.math._ /** * @author xwolf * @date 2017-04-24 9:57 * @since 1.8 */ class Function { // _ 将round 方法转化为函数 val cel = round _ def add(x:Int,y:Int) = x+y //函数 def f(x : => Int) = x.+(3) def m (r : => Do…
1. Regex对象 我们可以使用scala.util.matching.Regex类使用正则表达式.要构造一个Regex对象,使用String类的r方法即可: val numPattern = "[0-9]+".r 如果正则表达式包含反斜杠或引号的话,那么最好使用"原始"字符串语法"""...""": val positiveNumPattern = """^[1-9]\d*…
1. 读取行 读取文件,可以使用scala.io.Source对象的fromFile方法.如果读取所有行可以使用getLines方法: val source = Source.fromFile("/home/xiaosi/exception.txt", "UTF-8") val lineIterator = source.getLines() for(line <- lineIterator){ println(line) } source.close() s…
1. 单例对象 Scala没有静态方法或静态字段,可以使用object来达到这个目的,对象定义了某个类的单个实例: object Account{ private var lastNumber = 0 def newUniqueNumber () = {lastNumber += 1; lastNumber} } 当你在应用程序中需要一个新的唯一账号时,调用Account.newUniqueNumber()即可.对象的构造器在该对象第一次被使用时调用.在本例中,Account的构造器在Accou…
1. 简单类与无参方法 class Person { var age = 0 // 必须初始化字段 def getAge() = age // 方法默认为公有的 } 备注 在Scala中,类并不声明为public. Scala源文件可以包含多个类,所有这些类都具有公有可见性.属性不声明默认为public. 使用类: val p = new Person // 或者new Person() p.age = 23 println(p.getAge()) // 23 调用无参方法时,可以写上圆括号,也…
Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. 不太久之前编程语言还可以毫无疑意地归类成“命令式”或者“函数式”或者“面向对象”.Scala代表了一个新的语言品种,它抹平了这些人为划分的界限. 根据David Rupp在博客中的说法,Scala可能是下一代Java. 与只支持单继承的语言相比,Scala具有更广泛意义上的类重用.Scala允许定义新类的时候重用“一个类中新增的成员定义(即相较于其父类的差异之处)…
1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> 89, "Bob"-> 98) scores: scala.collection.immutable.Map[String,Int] = Map(Alice -> 90, Kim -> 89, Bob -> 98) 上面构造了一个不可变的Map[String, I…
1. 变量 val定义的值实际上是一个常亮,无法改变其内容 scala> val num = 0 num: Int = 0 scala> num = 2 <console>:12: error: reassignment to val num = 2 ^ 如果要声明其值可变的变量,可以使用var scala> var number = 0 number: Int = 0 scala> number = 2 number: Int = 2 在Scala中,建议使用val,…
一  Scala简述 Scala (斯卡拉)是一门多范式(multi-paradigm)的编程语言. 这里所谓的范式,指的是编写程序的方式,不同的编程语言,方式也不尽相同,也就意味着Scala编程语言是融合了多种不同编程方式的语言.所以Scala语言的设计初衷是要集成面向对象编程和函数式编程的各种特性. 二  Scala与Java的关系 创始人马丁·奥德斯基(Martin Odersky)是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效,简单,且…
1.单例对象和伴生对象 2.定义单利对象的apply方法可不通过构造器直接创建对象 3.extends 来扩展单例对象 4.枚举实现 /** * 单例对象 * * @author xuejz * @date 2017-04-13 16:41 * @since 1.8 */ //单例对象 class Parent extends Action(12){ //调用伴生对象的无参方法 val pson =if(Parent.son==0) 1 else Parent.newSon val son=0…
大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储技术现在比较经典方案是使用Hadoop,不过也很多方案采用Kafka.  2.对数据集合的操作技术,目前全球最火爆的是Spark.  Spark的框架实现是语言是Scala,首选应用程序开发语言也是Scala,所以Scala对集合以及集合操作的支持就非常重要且非常强大,因此Spark中对很多数据操作算子和Scala中对集合的操作是一样的.  Scala中数据的创建与操作…
优先使用不可变集合.不可变集合适用于大多数情况,让程序易于理解和推断,因为它们是引用透明的( referentially transparent )因此缺省也是线程安全的. 使用可变集合时,明确地引用可变集合的命名空间.不要用使用import scala.collection.mutable._ 然后引用 Set ,应该用下面的方式替代: import scala.collections.mutable val set = mutable.Set() 这样就很明确在使用一个可变集合. 使用集合类…