首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

scala 集合详细

元组 在scala 中元组可以容纳不同类型元素的类,元组是不可变的,用于函数返回多个值....mutable.Set 可变集合与不可变的区别是可以将集合元素修改,使用的是 += ++= -= --= 等操作 xs add x 把元素 x 添加到集合 xs 中,如集合 xs 之前没有包含 x...xs remove x 从集合 xs 中删除元素 x 。如之前 xs 中包含了 x 元素,返回 true,否则返回 false。 xs retain p 只保留集合 xs 中满足条件 p 的元素。...创建可变集合,只需要val s = collection.mutable.Set(1,2,3) sortedSet SortedSet 的默认表示是有序二叉树,即左子树上的元素小于所有右子树上的元素。...Scala的类 immutable.TreeSet 使用红黑树实现,它在维护元素顺序的同时,也会保证二叉树的平衡,即叶节点的深度差最多为1 先创建排序规则 val myOrdering = Ordering.fromLessThan

90820

大数据--scala学习第一章:基础第二章:控制结构和函数第三章:数组第四章:字典和元组第五章:类第六章:对象第七章:包和引入第八章:继承第九章文件和正则表达式第十章特质:接口第十一章操作符第十二章函

4、没有++操作符,因为Scala中大部分的算术类型都是不可变的如Int类型。 5、Scala.math中定义了很多方法,类似于静态方法。引入包后可以直接调用如:sqrt(4)。...8、Scala中可以重载操作符,如之前的+-*/等操作符都是重载的方法。...Scala函数中不建议使用return返回,你可以使用但不推荐。...indexedSeq是数组的超类型。 2、Scala中有可变和不可变的集合,不可变的集合不可以改变但是可以通过操作生成新的不可变集合。...3、不可变序列:vector类似于数组但底层机构是树,不是线性的不过也支持快速的随机访问, Range表示的是一个整数序列,Range对象只存储起始值,结束值和增值。

4.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    scala 容器详细解释

    scala.collection.mutable 包的集合类则有一些操作可以修改集合。 scala.collection 包中的集合,既可以是可变的,也可以是不可变的。...Traversable容器有有限和无限之分。比方说,自然数流Stream.from(0)就是一个无限的traversable 容器。hasDefiniteSize方法能够判断一个容器是否可能是无限的。...它们不添加任何新的操作,但都提供不同的性能特点:线性序列具有高效的 head 和 tail 操作,而索引序列具有高效的apply, length, 和 (如果可变) update操作。...例如,我们可以像下述代码那样在HashMap中混入SynchronizedMap。 具体不可变集实体类 List 列表List是一种有限的不可变序列式。...提供了常数时间的访问列表头元素和列表尾的操作,并且提供了常数时间的构造新链表的操作,该操作将一个新的元素插入到列表的头部。其他许多操作则和列表的长度成线性关系。

    1.3K10

    学好Spark必须要掌握的Scala技术点

    里用final修饰的变量 val i = 1 //使用var定义的变量是可变的,在Scala中鼓励使用val var s = "hello" //Scala编译器会自动推断变量的类型...可变Map:scala.collection.mutable.Map==>类似于Java中的HashMap,可以进行put、get、remove等操作,内容可变 ?...Scala主要分主构造器和辅助构造器两种: 主构造器里面的变量会被执行,方法会被加载,调用的方法会被执行 辅助构造器(相当于重载的构造函数)不可以直接调用超类的主构造器 /**每个类都有主构造器,...主要作用: 1)存放工具方法和常量 2)高效共享单个不可变的实例 3)单例模式 2.伴生对象 单例对象,不需要new,用【类名.方法】调用单例对象中的方法 伴生对象 在scala的类中,与类名相同且与该类在同一个文件的对象叫伴生对象...模式匹配和样例类 4.1 模式匹配 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如替代Java中的switch语句、类型检查等。

    1.6K50

    Scala 学习笔记之Map与Tuple

    [String,Int] = Map(Alice -> 90, Kim -> 89, Bob -> 98) 上面构造了一个不可变的Map[String, Int],其值也不能被改变.如果想要一个可变映射...更新映射中的值 在可变映射中,可以更新某个映射的值,也可以添加一个新的键值对: scala> val scores = scala.collection.mutable.Map("Alice" ->...[String,Int] = Map(Alice -> 90, Kim -> 78, Bob -> 98, Tom -> 54) 上例中scores是不可变映射,我们在它基础上对”Kim”进行了修改,添加了...排序映射 在操作映射时,我们需要选定一个映射(哈希表还是平衡树).默认情况下,scala给的是哈希表.有时候我们想对键进行一个排序,顺序访问键,这就需要一个树形映射: scala> val scores...元组Tuple 元组是不同类型的值的聚合,元组的值通过将单个的值包含在圆括号中构成的: scala> val bobScore = (1, 98.5, "Bob") bobScore: (Int, Double

    63630

    Scala简介:面向对象和函数式编程的组合

    Scala意在伸缩性,语言的伸缩性受许多因素影响,范围从语法细节到控件的抽象构造。...如果我们一定要说出Scala中有助伸缩性的一个方面,我们会把面向对象和函数式编程的组合拣出来(呵呵,不厚道了一把,这的确是两个方面,但是纠缠在了一起)。...举例来说,许多语言容忍值不是对象,如Java里面的原始值。或者它们允许静态字段和方法不隶属于任何对象。...使用表达式如s.replace(';', '.')在字串里替换字符会产生一个新的,不同于原字串s的对象。用另一种表达方式来说就是在Java里字串是不可变的(immutable)而在Ruby里是可变的。...不可变数据结构是函数式语言的一块基石。Scala库在Java API之上定义了更多的不可变数据类型。例如,Scala有不可变的列表,元组,映射表和集。

    1.2K60

    大数据之脚踏实地学14--Scala自定义函数

    尽管在《大数据之脚踏实地学12--Scala数据类型与运算符》和《大数据之脚踏实地学13--Scala控制流》一文中我们都使用了Scala的函数,但没有详细介绍函数的具体使用方法和注意细节。...表示字符型的数组; 函数的参数类型 熟悉Python的朋友,对函数也一定不陌生,在Python中自定义函数包含四类参数,分别是必选参数、默认参数、可变参数和关键字参数。...在Scala中也有不同的参数类型,不同的是,其没有关键字参数。接下来我们通过几个小案例,分别介绍必选参数、默认参数和可变参数。...必选参数 必选参数,顾名思义就是当你在调用一个自定义函数时,必选给函数中的一些参数赋值,否则程序将会报错,并提醒用户“函数缺少参数值”。如下举例,构造一个计算两个数乘积的算法平方根的自定义函数。...好在Scala给自定义函数提供了可变参数,目的就是解决这类问题的。

    87910

    3小时Scala入门

    五,Scala数据结构概述 Scala中最常用的数据结构为数组Array以及Collection包中的各种容器类。 按照两个角度进行划分,容器类可以分为可变或者不可变类型,有序或者无序类型。...九,集合 集合是一种不可变的类型,并且是无顺序的,适合查找某个元素是否在集合中。 ? ? 十,映射Map 映射和Python中的字典很像,但是Scala中的Map是一种不可变类型。...函数的值是函数的参数和返回值的取值映射关系, 如 x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式中引用了非参数的变量时,这种函数叫做闭包。...二十二,构造器 Scala的类包括一个主构造器和若干个(0个或多个)辅助构造器。 主构造器即定义类时传参并用来初始化对象属性的构造器,它是隐含的。...并且在一个良好风格的scala程序中,只需要使用val不可变变量而无需使用var可变变量。 显式的for或者while循环是不可取的,让我们用更多的高阶函数吧。

    1.6K30

    3小时Scala入门

    五,Scala数据结构概述 Scala中最常用的数据结构为数组Array以及Collection包中的各种容器类。 按照两个角度进行划分,容器类可以分为可变或者不可变类型,有序或者无序类型。...九,集合 集合是一种不可变的类型,并且是无顺序的,适合查找某个元素是否在集合中。 ? ? 十,映射Map 映射和Python中的字典很像,但是Scala中的Map是一种不可变类型。...函数的值是函数的参数和返回值的取值映射关系, 如 x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式中引用了非参数的变量时,这种函数叫做闭包。...二十二,构造器 Scala的类包括一个主构造器和若干个(0个或多个)辅助构造器。 主构造器即定义类时传参并用来初始化对象属性的构造器,它是隐含的。...并且在一个良好风格的scala程序中,只需要使用val不可变变量而无需使用var可变变量。 显式的for或者while循环是不可取的,让我们用更多的高阶函数吧。

    1.6K30

    3小时Scala入门

    五,Scala数据结构概述 Scala中最常用的数据结构为数组Array以及Collection包中的各种容器类。 按照两个角度进行划分,容器类可以分为可变或者不可变类型,有序或者无序类型。...九,集合 集合是一种不可变的类型,并且是无顺序的,适合查找某个元素是否在集合中。 ? ? 十,映射Map 映射和Python中的字典很像,但是Scala中的Map是一种不可变类型。...函数的值是函数的参数和返回值的取值映射关系, 如 x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式中引用了非参数的变量时,这种函数叫做闭包。...二十二,构造器 Scala的类包括一个主构造器和若干个(0个或多个)辅助构造器。 主构造器即定义类时传参并用来初始化对象属性的构造器,它是隐含的。...并且在一个良好风格的scala程序中,只需要使用val不可变变量而无需使用var可变变量。 显式的for或者while循环是不可取的,让我们用更多的高阶函数吧。

    3.5K20

    Scala变量和常用数据类型

    声明方式:val / var 变量名 : 变量类型 = 变量值 val定义的值是不可变的,它不是一个常量,是不可变量,或称之为只读变量。...在Scala中,每个用户自定义的类型都是AnyRef的子类型。如果Scala被应用在Java的运行环境中,AnyRef相当于java.lang.Object。...它的用途之一是给出非正常终止的信号,如抛出异常、程序退出或者一个无限循环(可以理解为它是一个不对值进行定义的表达式的类型,或者是一个不能正常返回的方法)。...拓展——Scala中的加减乘除 "+-*/%"可以完成和Java中相同的工作,但是有一点区别,他们都是方法。...Scala中没有++、–操作符,需要通过+=、-=来实现同样的效果。

    38510

    Scala语言快速了解一下?

    Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分,如def main(args: Array\[String]) {}Scala 程序里,语句末尾的分号通常是可选的。...Null类是null引用对象的类型,它是每个引用类(继承自AnyRef的类)的子类。Null不兼容值类型。变量在 Scala 中,使用关键词 "var" 声明变量,使用关键词 "val" 声明常量。...集合Scala 集合分为可变的和不可变的集合。可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。而不可变集合类,相比之下,永远不会改变。...Scala 集合分为可变的和不可变的集合。默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set 包。...在 Scala 中 你可以同时使用可变与不可变 Map,不可变的直接使用 Map,可变的使用 mutable.Map。

    3K102

    Scala专题系列(一):Scala基础

    应用Scala 和函数式编程能够构造杀手级应用。...二 :Scala基础 1:变量声明 在Scala中,允许在声明变量是可变的还是不可变(只读)的,不可变的用val关键字声明: val str : String = "hello scala" 上例就是声明了一个...var price:double = 100.0 关于上述提到,val和var声明变量时必须初始化这一个规则,也有例外情况,比如这两个关键字均可以用在构造函数的参数中,这时候变量是该类的一个属性,因此显然不必在声明时进行初始化...此时如果用 val 声明,该属性是不可变的;如果用 var 声明,则该属性是可变的 为了减少可变变量在并发编程中,引起bug,应该尽可能的使用不可变变量,而比较常见的一种现象是当你正在使用的对象被其他人修改时...(例如,在类中的 抽象声明,如 val book: String, var count: Int)。 所有的方法参数(如 def deposit(amount: Money) = {… })。

    73540

    Scala语法笔记

    JAVA中,举例你S是一个字符串,那么s(i)就是该字符串的第i个字符(s.charAt(i)).Scala中使用apply的方法 JAVA与C++的?...-1 高级for 循环  可以使用变量的形式提供多个生成器,用分号将其隔开 如果for循环的循环体以yield开始,则循环会构造出一个结合,每次迭代生成集合中的一值: 每个生成器都自带一个守卫...,Java的思想被颠覆) 过程,Scala对于不返回值的函数有特殊的表示语法,如果函数体包含在花括号中但没有前面的=号,那么返回类型就是Unit 或def box(s : String) : Unit...和集一样,Scala采用了类继承机制提供了可变的和不可变的两种版本的Map,,Map的类继承机制看上去和Set的很像。...scala.collection包里面有一个基础Map特质和两个子特质Map:可变的Map在scala.collection.mutable里,不可变的在scala.collection.immutable

    1.2K20

    Scala最基础入门教程

    和Java一样,Scala构造对象也需要调用构造方法,并且可以有任意多个构造方法。...Scala类的构造器包括:主构造器和辅助构造器 class 类名(形参列表) { // 主构造器 // 类体 def this(形参列表) { // 辅助构造器 } def...如果想让主构造器变成私有的,可以在()之前加上private。 apply方法可以重载。 Scala中obj(arg)的语句实际是在调用该对象的apply方法,即obj.apply(arg)。...建议:在操作集合的时候,不可变用符号,可变用方法。 不可变集合 Set、Map是Java中也有的集合。...构造器中的每一个参数都成为val,除非它被显式地声明为var(不建议这样做) 3、偏函数中的模式匹配 偏函数也是函数的一种,通过偏函数我们可以方便的对输入参数做更精确的检查。

    69470

    多面编程语言Scala

    这段代码有以下值得注意的地方: 我们可以把字段定义和构造函数直接写在Scala的类定义里,其中,关键字val的含义是“不可变”,var 为“可变”,Scala的惯用法是优先考虑val,因为这更 贴近函数式编程风格...; 在Scala中,语句末尾的分号是可选的; Scala默认类访问修饰符为public; 注意println("测试信息")这一行,将在主构造函数里执行; val与var两者对应Java声明的差异性已在反编译代码中体现了...Scala提供了可变(mutable)与不可变(immutable)的集合类型版本,多线程应用中应该使用不可变版本,这很容易理解。...Array:数组是可变的同类对象序列; Set:无序不重复集合类型,有可变和不可变实现; Map:键值对的映射,有可变和不可变实现; Tuple:可以包含不同类元素,不可变实现; List:Scala的列表是不可变实现的同类对象序列...看得出来,不全函数同样可以提升代码的简洁程度,比如本例代码中,参数Array(1.0f, 2.3f, 4.5f)是固定不 变的,我们就不用每次都在调用cycle2时传入它,可以 先定义c22,再用c22

    2.5K40

    Scala学习笔记

    中,定义变量可以不指定类型,因为Scala会进行类型的自动推导     *)scala的条件表达式         IF 判断来说有三种结构:             -1, IF             ...    )             * 在scala中,主构造器是与类名放在一起的,有且只有一个,java可以写多个构造方法,多个构造方法间实现重载             * 在类中,没有定义在任何方法中的代码...* 辅助构造可以有多个             * 多个辅助构造器之间可以调用             * 辅助构造中的参数不可以加val或者var         3)私有构造器             ...object方法时,会执行object构造器,也就是说object内部不在method中的代码(并且只执行一次),但是object不能定义接受参数的构造器         4)注意object的构造器只会在第一次调用时执行...,以后再次调用不会再执行构造器了         在scala中可以用object实现:             作为存放工具函数或者常量的地方             高效的共享单个不可变实例

    2.6K40

    Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合

    都可以手动指定其类型,如果不指定,scala会自动根据值,进行类型的推断; 4:声明多个变量:可以将多个变量放到一起进行声明,如val id,age :Int = 0;val num1,num2=100...2:for循环,比如:for(i 的使用,多加揣摩和练习。 3:跳出循环语句:scala中没有提供如Java中的跳出循环语句。...,只要右侧的函数体中不包含递归的语句,Scala就可以根据自己右侧的表达式推断出返回类型。...3:默认参数,在Scala中,有时候在调用某些函数的时候,不希望给出参数的具体指,而希望使用参数自身默认的值,此时就在定义函数时使用默认参数。如果给出的参数不够,则会从左往右依次应用参数。...可以代表任意字符   textFile.filter(_.contains("Spark") 5:Scala之数组学习笔记: 1:Array,在Scala中,Array也是长度可变的数组,此外,由于Scala

    1.5K50

    Akka 指南 之「Akka 和 Java 内存模型」

    Akka 和 Java 内存模型 使用 LightBend 平台(包括 Scala 和 Akka)的一个主要好处是简化了并发软件的编写过程。...本文讨论了 LightBend 平台,特别是 Akka 如何在并发应用程序中处理共享内存。 Java 内存模型 在 Java 5 之前,Java 内存模型(JMM)是定义有问题的。...随着 Java 5 中 JSR 133 的实现,许多问题得到了解决。...在大多数情况下,消息是不可变的,但是如果该消息不是正确构造的不可变对象,没有“先于发生”规则,则接收者可能会看到部分初始化的数据结构,甚至可能会看到空气稀薄的值(longs/doubles)。...我们建议不要关闭非final字段(Java 中的final和 Scala 中的val),如果选择关闭非final字段,则必须标记volatile,以便字段的当前值对回调可见。

    1K20

    Scala专题系列 (八) : 模式匹配

    case语句后面接的是scala变量,如case x if(x == "1") => x等,在使用时一般会加守卫条件(if(...)在模式匹配中就是一个守卫,类型是一个boolean),当然也可以像case...x => x这样使用,它会匹配任何输入的合法变量 , 最后case _ => 等于一个default 模式匹配 - 构造器模式 构造器模式匹配直接在case语句后面接类构造器,匹配的内容放置在构造器参数中...List中的第一个元素,但是不赋值给变量 模式匹配-元组模式 元组是一种类似于集合的存储结构,不过集合是可变的,元组是不可变的,元组的声明方式:val t = new Tuple3(1,“2”,’3’)...元组模式用于匹配scala中的元组内容,用于匹配元组类型的变量内容。...序列模式:可以像匹配样本类那样匹配如List或者Array这样的序列类型。

    86320
    领券