`
alanland
  • 浏览: 635701 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

scala容器对象 - 1

阅读更多

编程语言中容器对象总是很重要的一块东西,记得java开发时用的最多的就是List什么的。学习scala当然也少不了这一块了,下面把学习过程分享给大家。

1Array 数组

Scala的数组是这个样子:


val arr = new Array[String](3)

 

程序员们基本都看得懂,new 一个Array对象,它的类型是String,长度为3。对元素赋值的操作如下:

 

arr(0) = "alan"

arr(1) = "stef"

arr(2) = "boy"

 

Java的不大一样,java是用[]来表示数组元素位置,而scala的赋值其实就是一个update方法了,方法当然是用小括号了。

  • 变量(参数) 表示:变量.apply(参数)

  • 变量(参数)=XX 表示:变量.update(参数,XX)

下面是遍历元素:

 

for (i <- 0 to 2)

print(arr(i))


其中 0 to 2 中是数字0调用to方法,to方法的参数是2


看一下一个更简洁的方法来创建数组:


val numNames = Array("zero", "one", "two")


scala的类型推断会断定 numNames 的类型为 Array[String],同样也可以理解为 Array.apply(XXX)

2List

scala中,ArrayList很重要的区别是:Array是可变对象,虽然其长度不可变,但是它的每个元素都可以更换,而其对象仍然是一个对象;List是不可变对象,创建后你对它进行任何更系操作,返回的都是一个新的List,就像java中的String对象一样。所以,List是设计给函数式编程使用的。

ListArray一样,元素必须要具有相同的类型。

List[T] 来说,如果其类型T有继承关系,那么List[T]也有继承关系,就是说List[Object]List[Int]的超类。

空的ListList())的类型是Nothing


val empty: List[Nothing] = List()


2.1创建

看一下如何创建一个List


val oneTwoThree = List(1, 2, 3)


2.2合并List

一个叫做“:::”的方法,可以把两个List连接在一起。


val oneTwo = List(1, 2)

val threeFour = List(3, 4)

val oneTwoThreeFour = oneTwo ::: threeFour // List(1, 2, 3, 4)


还有一个双冒号“::”的方法用来连接一个元素和List,这个元素会在List的最前端:


val twoThree = List(2, 3)

val oneTwoThree = 1 :: twoThree // List(1, 2, 3)


有一点要说明,上面的方法(::)是List的方法,虽然List在方法的左边。稍微追究一下就是已冒号结尾的方法名会被方法的右操作参数调用,其他时候是被左操作参数调用的。


这个方法配合Nil可以定义List

val oneTwoThree = 1 :: 2 :: 3 :: Nil


2.3append

由于效率原因,List没有提供append操作(随着列表变长其操作耗时会线性增长),而::花费常量时间。所以需要append时,可以reverse::reverse。也可已使用ListBuffer类,使用之后提供toList进行转换。


2.4基础操作

2.4.1(int)

相当于get,返回索引上的元素,索引是从0开始计算的。

2.4.2count

获取元素个数。


thrill.count(s => s.length == 4)


上面计算长度为4的元素的个数。


2.4.3drop(int)

去掉前面几个元素


2.4.4dropRight(int)

去掉后面几个元素


2.4.5exists

thrill.exists(s => s == "until")

判断是否存在某个元素。


2.4.6filter

thrill.filter(s => s == "until")

过滤元素


2.4.7forall

thrill.forall(s => s == "until")

判断是不是所有元素都是util


2.4.8foreach

thrill.foreach(s => print(s))

便利元素执行操作。


2.4.9head

返回第一个元素,无参函数


2.4.10init

出去最后一个元素之外的所有的元素。


2.4.11isEmpty


2.4.12last


2.4.13length


2.4.14map

加工元素,返回一个新的List

thrill.map(s => s + "y")


2.4.15mkString

用指定分割符号连接所有元素,返回字符串。

thrill.mkString(", ")


2.4.16remove

删除部分元素

thrill.remove(s => s.length == 4)


2.4.17reverse


2.4.18sort

排序

thrill.sort((s, t) =>

s.charAt(0).toLowerCase <

t.charAt(0).toLowerCase)

2.4.19tail

返回去掉第一个元素的所有元素。

0
3
分享到:
评论

相关推荐

    Scala容器的核心编程.pdf

    JAVA 程序设计师的 SCALA 入门教学, 此教学将对 Scala 语言以及编译器做一个简易介绍。设定的读者为具有程设经验且想要看 Scala 功能概要的人。内文假设读者有着基本、特别是 Java 上的对象导向程设知识。

    Scala程序设计(第2版)

    第1章 零到六十:Scala简介 1 1.1 为什么选择Scala 1 1.1.1 富有魅力的Scala 2 1.1.2 关于Java 8 3 1.2 安装Scala 3 1.2.1 使用SBT 5 1.2.2 执行Scala命令行工具 6 1.2.3 在IDE中运行Scala ...

    scala从入门到精通技术教学视频

    1,知识体系完备,从小白到大神各阶段读者均能学有所获。 2,生动形象,化繁为简,讲解通俗易懂。 3,结合工作实践及分析应用,培养解决实际问题的能力。 4,每一块知识点, 都有配套案例, 学习不再迷茫。 课程简介 ...

    sample-crud-scala:用 Scala 编写的示例 CRUD

    示例 CRUD 应用程序 这是示例 Scala 应用程序,表示为: 后端的前端的基本上它是项目的非常直接的端口应用技术与原来的主要区别是所有后端都是用编写的下面是一系列基于 Java 的技术: — 嵌入式 Web 容器;...

    softlayer-object-storage-scala:该客户端旨在用于访问 Softlayer Object Storage API

    Softlayer 对象存储 Scala 客户端 该客户端旨在用于访问 Softlayer Object Storage API 请注意,当前客户端正在开发中 验证 import objectstorage . _ val connection = Connection (userName, apiKey) 创建容器...

    java变量作用域笔试题-arquillian-testrunner-spock:ArquillianSpockTestRunner

    开发的测试框架,它使开发人员能够为在嵌入式或远程容器内执行的业务对象编写集成测试——选项包括 servlet 容器、Java EE 应用程序服务器或 Java SE CDI 环境. Spock 是用于 Java 和 Groovy 应用程序的测试和规范...

    Java Application Architecture Modularity Patterns with Examples Using OSGi Part1

    第1章 模块定义 1.1 定义模块 1.1.1 可部署 1.1.2 可管理 1.1.3 可测试 1.1.4 原生可重用 1.1.5 可组合 1.1.6 无状态 1.2 软件模块的简洁定义 1.3 结论 第2章 模块化的两个方面 2.1 运行时模型 2.2 开发模型 2.2.1 ...

    Java Application Architecture Modularity Patterns with Examples Using OSGi Part2

    第1章 模块定义 1.1 定义模块 1.1.1 可部署 1.1.2 可管理 1.1.3 可测试 1.1.4 原生可重用 1.1.5 可组合 1.1.6 无状态 1.2 软件模块的简洁定义 1.3 结论 第2章 模块化的两个方面 2.1 运行时模型 2.2 开发...

    item-management-system

    物品管理系统 Dockerized模型-视图-... 大型的面向对象,小型的函数式编程 管理员React 通过React Hooks组成的容器/演示器架构 数据库-PostgreSQL 通过视图和触发器连接的共享元数据表 存储过程和域 第四范式(4NF)

    microberw:kafka in kafka out 基于Spark Streams的通用代码调用器

    Scala/Java 容器,它将接收一个数据对象(事件)并在其上执行给定的代码。 2. 开箱即用的端到端登录 3. 至少已验证连接: a. SQL B. 卡夫卡 C. Hadoop D. JMS E. 4.导致内存缓存。 5. 开发者 UI(下一阶段)

Global site tag (gtag.js) - Google Analytics