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

scala容器对象 - 2

 
阅读更多


 

3Tuple 元组

使用过python的朋友肯定知道这个东西。

Scala中,元组也是不可变对象,其特点是容器内的对象可以是不同类型。

定义元组:

val pair = (99, "Luftballons")

很简单了,直接小括号,中间元素用逗号隔开就行了。


获取列表元素:

pair._1

pair._2

scala使用 点+下划线+下标 来访问元组中的元素。有两点可能比较怪:

  • 下标是从1开始,好像是符合其他静态语言元组的使用习惯,不过对我来感觉不习惯,因为我接触元组是从python开始的。

  • 下标前面要加下划线,这个没什么好说的,记着吧 ~


关于应用,简单的用途比如:

  1. 在函数中,你希望返回2个或者两个以上的内容,怎么办?用Object的数组,封装一个Bean,现在都不用,return一个元组更加舒服。

(i, someValue)

i, someValue

  1. 已经有一个元组,想使用其中的数据,点+下划线太麻烦,看下面:

val name = ("alan", "wang")

val firstName, lastName = name

一句话,firstNamelastName都赋值了。


note:元组定义的那个小括号可以不加的,上面有用到的 ~

 

4set

不同与ArrayListArray是可变的,List是不可变的。Scalaset提供了不可变set和可变的set,如下图:





可变和不可变的对象提供相同的方法,但是处理结果却不一样,可变对象修改对象内容然后返回,不可变对象创建一个新的对象返回。scala的函数式编程风格鼓励使用不可变的数据结构,不过到底如何使用,可以看具体场景,如果你习惯了可变对象,那么可以先用可变对象,到熟悉了函数式编程那么尽量使用不可变对象。

 

4.1添加新元素(+

可变和不可变的Set都提供了一个名为+的操作:

var set = Set(1, 2, 3) // 此处为 varval不可重新赋值

set += 4 //set = set + 4


对于可变Set+操作会将元素添加到自身;对于不可变的Set,返回一个添加了新元素的Set

看一下可变Set

import scala.collection.mutable.Set

val movieSet = Set("Hitch""Poltergeist")

movieSet += "Shrek" // movieSet.+=(“Shrek”)


上面movieSet 执行+=之前和之后是一个对象。上面定义是val,因为可变对象不需要重新赋值。

 

4.2HashSet

Set一般可以实现大多数的操作。如上节所示:

var set = Set(1, 2, 3)

更详细的写法如下:

var set = Set.apply(1, 2, 3)


apply方法是Set trait 的伴生对象(object Set)定义的。如果想直接使用某个类,和上面一样:

import scala.collection.immutable.HashSet

val hashSet = HashSet("Tomatoes""Chilies")

println(hashSet + "Coriander")


HashSet也有可变和不可变的实现。

4.3set的方法(可变和不可变)

4.3.1contains

是否包含元素

4.3.2apply

apply也可以用来测试是否包含元素,如下:

val fruit = Set("apple""orange""peach""banana")

fruit("peach"// true

fruit("potato"// false

 

4.3.3subSetOf

用来检测一个Set是否是另一个的子集。

 

4.3.4+

增加一个或者多个元素


set + element

set + (element1, element2)

 

4.3.5++

Set相加。


setA + setB

 

4.3.6移除

和增加元素一样,移除的方法也有两个 和 --,用法和++相同。

如果要移除set中所有元素,那么可以用empty方法。

 

4.3.7&intersection

获得两个Set的交集

setA & setB

setA intersection setB

 

4.3.8|union

获得两个Set的并集

setA | setB

setA union setB

 

4.3.9&~ diff

获得两个Set中不同的部分。

SetA &~ setB

setA diff setB

 

4.4可变Setmutable.Set

可变Set一般都返回元素变化后的自身。

4.4.1+=

Set + a

set + (a, b, c)

4.4.2++=

SetA ++= setB

4.4.3add

添加一个元素,如果这个元素以前不存在,那么返回true,如果之前已经存在则返回false

4.4.4-=

4.4.5--=

4.4.6remove

类似add

4.4.7retain

 

4.4.8clear

删除所有的元素

 

4.4.9update()=

set(x)=newX

4.4.10clone

克隆对象。

 

0
3
分享到:
评论

相关推荐

    Scala容器的核心编程.pdf

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

    Scala程序设计(第2版)

    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 REPL 8 1.3 使用Scala 8 1.4 并发 17 1.5 本章回顾与...

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

    2,生动形象,化繁为简,讲解通俗易懂。 3,结合工作实践及分析应用,培养解决实际问题的能力。 4,每一块知识点, 都有配套案例, 学习不再迷茫。 课程简介 第一章 环境搭建 00.导学 01.Scala简介 02.Scala程序和Java...

    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 Part2

    7.11.5 关于面向对象 7.12 结论 7.13 参考文献 第二部分 模 式 第8章 基本模式 8.1 管理关系 8.1.1 表述 8.1.2 描述 8.1.3 多种实现 8.1.4 影响 8.1.5 样例 8.1.6 小结 8.2 模块重用 8.2.1 表述 8.2.2...

    Java Application Architecture Modularity Patterns with Examples Using OSGi Part1

    7.11.5 关于面向对象 7.12 结论 7.13 参考文献 第二部分 模 式 第8章 基本模式 8.1 管理关系 8.1.1 表述 8.1.2 描述 8.1.3 多种实现 8.1.4 影响 8.1.5 样例 8.1.6 小结 8.2 模块重用 8.2.1 表述 8.2.2 描述 8.2.3 ...

    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