`
lance4t
  • 浏览: 12303 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

scala的不可改变型(immutable)集合与对象数据库

阅读更多
在java中,经常使用的基本类型都是非可改变的,包括String这个特殊的对象类型。那么这种非可改变特性会有什么好处类?首先就是线程安全。String可以任意被多个线程共享而不用考虑同步问题。然后就是可以放心的存储一个String,因为它在作为参数传递时也不会被其他方法修改掉,比如toLowerCase()。
非可改变型数据类型的好处就是减少出错的可能性,减少测试代码量,还有在大多数情况下能获得更好的性能。

在scala中,所有的scala原生集合分为两类,分别放在两个不同的包下面,当创建一个集合的时候,如果不引入任何包,那么所得到的集合就是immutable的。要使用mutable的集合,就必须明确的引入scala.collection.mutable包。

简单介绍了immutable集合,那么为什么扯上对象数据库那?
因为DB4O这样的对象数据库要存储非可改变集合是相当让人头疼。
当对象中的immutable集合改变的时候,实际上是创建了新的一个集合,原有的集合被抛弃,在JVM有GC来收集这些垃圾,那么在对象数据库中可没有GC来用(Perst据说有GC,但是不清楚能做到什么程度,理论上很难实现清除),这样数据库就变垃圾场了,目前对象数据库都是针对java专门设计,只对String类型特殊处理。
那么每次修改immutable集合的时候都要手动删除原来的集合对象
好在scala也封装了原有的java集合类,目前我是用java原生集合。
鱼和熊掌不能兼得啊,现在还看不太清对象数据库的前景,不知道将来会不会解决immutable集合类问题。
0
0
分享到:
评论

相关推荐

    Scala-part2集合框架

    快速掌握集合,Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质 在Scala中集合有可变(mutable)和不可变(immutable)两种类型

    scala + mybatis 数据库查询

    这是一个简单实用的scala集成mybatis数据库查询代码,简单明了

    头歌Scala中集合的使用

    Scala中集合的使用 大学生 1. List 列表的使用 2. Set 集合的使用 3.Map 映射的使用 4. 元组的使用

    scala五本经典资料集合

    但是现在scala的相关学习资料不多,因此,本人总结了几篇写的较好的scala学习资料,包含<ScalaQuery_Commerzbank_2011><twitter-scala><TR611><scala-style-guide>。因此,无论是初学者,还是想要深入研究scala的...

    Scala编程实战.zip

    学习Scala语言,不仅仅意味着熟悉新的API,更重要的是一种思维方式的转变。从原有的面向对象编程(OO)到函数式编程(FP)的思想。本书面向实际的使用场景,提供了大量的Scala实例,同时,也给出底层的原理和相关的...

    Scala程序设计(第2版)

    12.1 通用、可变、不可变、并发以及并行集合 288 12.1.1 scala.collection包 289 12.1.2 collection.concurrent包 290 12.1.3 collection.convert包 291 12.1.4 collection.generic包 291 12.1.5 ...

    Scala 2.11.8安装包 集合

    安装版本 scala-2.11.8.zip,windows 的zip安装包、Linux 的.tar安装包,以及scala de源码 和 IDEA 的 scala-intellij-bin-2016.2.0.zip

    Scala编程详解 第13讲-Scala编程详解:面向对象编程之对象 共9页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    scala编程中文pdf

    scala编程 33章 中文pdf Scala编程实战 目录 第1章字符串. 11 第2章数值39 第3章控制结构.60 第4章类和属性.103 第5章方法147 第6章对象170 第7章包和导入.190 第8章特质200 第9章函数式编程214 第10 章集合242 第...

    Scala 集合数据操作示例

    map[B](f: (A) ? B): List[B] 定义一个变换,把该变换应用到列表的每个元素中,原列表不变,返回一个新的列表数据

    快学Scala 课后习题答案集合

    快学Scala 课后习题答案集合

    Scala集合.md

    学习spark之前,大家必须先学会Scala这门语言,他是spark的基础,这里总结了一下Scala集合的相关知识点

    最好的scala学习 课件

    最好的scala 学习课件,最好的scala 学习课件,学习spark必备

    Scala考试题1

    1.var,val和def三个关键字之间的区别 2.trait(特质)和abstract class(抽象类)的区别 3.object和class的区别 4.c

    scala习题精选100道附带解析

    scala习题精选100道,每道都有人工分析,技术点原理,不只是简单的答案

    Scala数据库访问库ScalaSlick.zip

    Slick 是 TypeSafe 推出的 Scala 数据库访问库。开发者可以使用 Scala 语言风格来编写数据查询,而不是用 SQL,示例代码: object Coffees extends Table[(String, Int, Double)]("COFFEES") { def name = column...

    快学scala习题及答案详解

    快学scala习题、答案、详细解答 快学scala第一章习题答案.doc 快学scala第二章习题答案.doc 快学scala第三章习题答案.doc ......

    Scala编程详解 第14讲-Scala编程详解:面向对象编程之继承 共13页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

    Scala编程详解 第12讲-Scala编程详解:面向对象编程之类 共12页.pptx

    第17讲-Scala编程详解:函数式编程之集合操作 共9页 第18讲-Scala编程详解:模式匹配 共11页 第19讲-Scala编程详解:类型参数 共13页 第20讲-Scala编程详解:隐式转换与隐式参数 共9页 第21讲-Scala编程详解:Actor...

Global site tag (gtag.js) - Google Analytics