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集合的时候都要手动删除原来的集合对象 :cry:
好在scala也封装了原有的java集合类,目前我是用java原生集合。
鱼和熊掌不能兼得啊,现在还看不太清对象数据库的前景,不知道将来会不会解决immutable集合类问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值