2. scala中的数组】的更多相关文章

一. 数组声明 定长数组 scala> new Array[String](5) res1: Array[String] = Array(null, null, null, null, null) scala> Array("a","b",1) res4: Array[Any] = Array(a, b, 1) ArrayBuffer scala> import scala.collection.mutable.ArrayBuffer import…
数组 数组的两种声明方式,建议声明数组时指定类型. 访问数组元素时获取数组下标 数组Array类本身有很多非常方便的方法 变长数组ArrayBuffer,能够动态增加元素,也可以实现与Array的互转 看代码: import scala.collection.mutable.ArrayBuffer import java.util.ArrayList /** * 数组 * @author Administrator */ object TestScalaArray { def main(args…
一.前述 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 类型的数组,直接赋值…
package test /* 1.在scala集合中,Iterable是共同的Trait,Iterable要求继承者实现一些共同的方法,例如元素的遍历 * 2.Array是scala基础的数据结构,不从属于scala集合体系 * 3.scala集合分为可变和不可变集合.,不可变集合在scala.collection.immutable里,可变在scala.collection.mutable * * 4.List集合是不可变的,head指第一个元素,tail指剩下的元素组成的集合,而Linke…
1.共有两种操作 转换成一种新的数组 2.yield转换 3.函数式编程转换…
本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以访问其中特定位置的元素.序列类型主要包括List,Array, ListBuffer, ArrayBuffer . 1.List List在前一章已经介绍过,略. 2.Array 数组在很多编程语言中都会用到.下面代码中包括了如何定义一个Array类型变量,如何在定义Array变量时赋初始值,以及如…
数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不关心其他选择,而只是想马上开始用数组.本篇的要点包括: 1. 若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer 2. 提供初始值时不要使用new 3. 用()来访问元素 4. 用for (elem<-arr)来遍历元素 5. 用for (elem<-arr if…)…yie…
在Scala中存在好几个Zip相关的函数,比如zip,zipAll,zipped 以及zipWithIndex等等.我们在代码中也经常看到这样的函数,这篇文章主要介绍一下这些函数的区别以及使用. 1.zip函数将传进来的两个参数中相应位置上的元素组成一个pair数组.如果其中一个参数元素比较长,那么多余的参数会被删掉.看下英文介绍吧: Returns a list formed from this list and another iterable collection by combining…
1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组,必须声明一个变量来引用数组,必须指定数组变量可以引用的类型.下面是语法声明数组变量: var z:Array[String] = new Array[String](3) or var z = new Array[String](3) or var z = Array("Zara", &…
If 判断: object TestScalaIf { def main(args: Array[String]): Unit = { // val resutlt = judge1(-100) // println(resutlt) val resutlt2 = judge2(100) println(resutlt2) } /* * scala中不存在三元运算符,使用if/else */ def judge1(x:Int) = { val c = if(x > 0) 1 else "s…
本文旨在介绍Scala在其他语言中不太常见的符号含义,帮助理解Scala Code. 随着我对Scala学习的深入,我会不断增加该篇博文的内容. 修改记录 ----2016.11.23  新增scala中最神秘强大的下划线(_)用处 下面介绍Scala中的符号: :::三个冒号运算符:表示list的连接操作 val one = List(1,2,3) val two = List(4,5,6) val three = one:::two 输出结果为:three: List[Int] = List…
本章主要分析Scala中List的用法,List上可进行的操作,以及需要注意的地方. 一.List字面量 首先看几个List的示例. val fruit = List("apples", "oranges", "pears") val nums = List(1, 2, 3, 4) val diag3 = List( List(1, 0, 0), List(0, 1, 0), List(0, 0, 1) ) val empty = List()…
所谓的内建控制结构是指编程语言中可以使用的一些代码控制语法,如Scala中的if, while, for, try, match, 以及函数调用等.需要注意的是,Scala几乎所有的内建控制结构都会返回一个值,这是由于函数式编程语言被认为是计算值的过程,所以作为函数式编程语言的一个组件,这些内建控制结构也不例外. 如果不好理解函数式编程语言中每一个内建控制结构都会返回一个值这一概念,可以回想一下? :表达式,这个表达式基本上能表明这一概念,作用和if表达式类似,但是会根据条件得到一个分支的值作为…
在Scala中,Array代表的含义与Java类似,也是长度不可改变的数组.此外,由于Scala与java都是运行在JVM中,双方可以互相调用,因此Scala数组底层实际上是java数组.列如字符串数组java的String[],整数的数组int[]. val a = new Array[Int](10) val a = new Array[String](10) 可以直接使用Array()创建数组,元素类型自动推断 val a = Array("Hello","world&…
Scala进阶之路-Scala中的枚举用法案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的枚举值和Java中的枚举值有点差别,不过使用起来也都差大同小异,我这里分别写了一个Java定义枚举类型和Scala定义枚举类型的案例. 一.Java中定义枚举类型案例展示 /* @author :yinzhengjie Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%…
转载:http://www.jianshu.com/p/95896d06a94d 1.option类型避免对象是空值,造成空指针异常. 2.None对象表示null,在没有对象返回时使用,some在有对象值时使用. 避免null使用 大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null.在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的.但是这对语言设计者来说是一件令人疑惑的选择.为什么要在程序员希望返回一个对象的时候返回…
一.数组 1.定长数组 声明数组的两种形式: 声明指定长度的数组 val 数组名= new Array[类型](数组长度) 提供数组初始值的数组,无需new关键字 Scala声明数组时,需要带有Array类名,且使用 () 来指明长度或提供初始值序列. 在JVM中,Scala的Array以Java数组的方式实现.如arr在JVM中的类型对应java.lang.String[],charArr对应char[]. 2.变长数组 ArrayBuffer,全称scala.collection.mutab…
在scala中数组分为不可变长数组(在immutable包下)和可变长数组(在mutable包下) 不可变长数组指的是长度不可变,但是数组中角标对应的元素的值是可变的 可变数组指的是长度和数组中角标对应的元素都是可变的. object ArrayDemo { def main(args: Array[String]): Unit = { /** * 不可变数组一旦初始化,数组的长度就是不可变的,不能往数组中添加任 * 何元素 */ val arr = Array[Int](1, 2, 3, 4,…
一.简介 Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍: 二.Scala中的模式匹配 2.1 基本格式 Scala中模式匹配的基本格式如下: data match { case ... => 执行语句 case ... => 执行语句 case _  => 执行语句 } 其中,data表示将要进行模式匹配的对象,match是模式匹配的关键字,后面紧跟的{}中包含若干条匹配的方向,且只会匹配其中满足条件的第一条:…
参考资料: scala中常用但其他语言不常见的符号含义 Scala学习六:Scala中的特殊字符 =>(匿名函数) 参考文档:scala => 用法 匿名函数 => 匿名函数,在Spark中函数也是一个对象可以赋值给一个变量. Spark的匿名函数定义格式: (形参列表) => {函数体} 所以,=>的作用就是创建一个匿名函数实例. 比如:(x:Int) => x +1 ,就等同于下面的Java方法: public int function(int x) { retur…
一.数组 1.定长数组 声明数组的两种形式: 声明指定长度的数组 val 数组名= new Array[类型](数组长度) 提供数组初始值的数组,无需newkeyword Scala声明数组时.须要带有Array类名,且使用 () 来指明长度或提供初始值序列. 在JVM中.Scala的Array以Java数组的方式实现.如arr在JVM中的类型相应java.lang.String[].charArr相应char[]. 2.变长数组 ArrayBuffer,全称scala.collection.m…
集合最重要的继承路线 —— Traversable -> Iterable -> Seq -> LinerSeq -> List Traversable 中的公有方法: 分类 方法 相加操作  ++ 大小信息  isEmpty,nonEmpty,size和hasDefiniteSize 元素测试  exists,forall和count 元素检索  head,last,headOption,lastOption和find 转换操作  toArray,toList,toIterabl…
列表或许是Scala程序中最常用到的数据结构了,其与数组非常相似,最重要的两点差别为: 1.列表是不可变的: 2.列表具有递归结构,而数组是连续的. 在实际使用中非常容易这样用: val a = List("String")a.add("String") IDEA不会报错,甚至也会给出你add方法的提示,如 但是在运行中就会报错! 对于初学者来说,首先想到的应该是去查查scala的List如何新增数据,很容易就可以得到答案  :: def ::(x: A): Lis…
/** * 在scala中数组的使用 * 和java很类似,初始化后,长度就固定了,而且元素全部根据其类型初始化 * */ object arrayUse { def main(args: Array[String]): Unit = { val a = new Array[Int](9) a(0) = 1 // 数组元素的赋值 println(a(0)) // 1 // 未赋值的元素访问 println(a(1)) // 0 // 也可以使用如下方法,不用关键字new来创建 val names…
7.    模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配. 7.1.   匹配字符串 package cn.itcast.cases import scala.util.Random object CaseDemo01 extends App{   val arr = Array("hadoop", "zookeeper", &quo…
6.    类.对象.继承.特质 Scala的类与Java.C++的类比起来更简洁,学完之后你会更爱Scala!!! 6.1.   类 6.1.1.    类的定义 package cn.itcast.class_demo /** * 在Scala中,类并不用声明为public类型的. * Scala源文件中可以包含多个类,所有这些类都具有共有可见性. */ class Person {   //用val修饰的变量是可读属性,有getter但没有setter(相当与Java中用final修饰的变…
通过Scala对文件进行读写操作在实际业务中应用也比较多,这里介绍几种常用的方式,直接上代码: 1. 从文件中读取内容 object Main { def loadData(): Array[String] = { var bs: BufferedSource = null var in: InputStream = null try { in = Main.getClass.getClassLoader.getResourceAsStream("data.txt") if (in =…
scala中List.Array.ListBuffer.ArrayList.Set 一.List 二.Array 三.LIstBuffer 四.ArrayBuffer 五.Set 一.List List列表:不可变.LIst支持在头部快速添加和移除条目,但是不提供快速按下标访问的功能,这个功能需要线性遍历列. List列表跟数组非常像,两者都是同构的,同一个列表的所有元素必须是相同类型. 但是有2个重要区别: List是不可变的,元素不能通过赋值改变. 列表的结构是递归的(即链表,linkedL…
Scala中使用fastJson 解析json字符串 添加依赖 2.解析json字符 2.1可以通过JSON中的parseObject方法,把json字符转转换为一个JSONObject对象 2.2然后可调用JSONObject中的方法,根据key获取值 2.3对于JSON中的套JSON字符串的可以使用 2.4如果想要遍历JSONArray中的所有数据,想不使用getJSONObject方法,但是想要这里面的遍历的所有的JSONObject可以使用 3.实例 添加依赖 <!--解析json字符串…
出错代码 写java 和 scala 混合代码的时候遇到一个小问题 def extractRefInputFieldsWithType(exprs: JList[RexNode]): Array[(Int, RelDataType)] = { val visitor = new InputRefVisitor // extract referenced input fields from expressions exprs.foreach(_.accept(visitor)) visitor.g…