如何在Scala中将对象保留在内存中?

时间:2013-05-08 14:34:21

标签: scala object memory

Scala可以创建一个对象并将其保存在内存中吗?我希望这个问题还不存在。我至少没有发现Scala的具体内容。

问题是,我想读取某个国家的邮政编码数据的CSV文件(它不是太大,所以它应该适合内存)并将邮政编码和相应的城市存储到一个对象中(例如以邮政编码为键,以花旗为值的地图。后来我想在这个对象中搜索特定的邮政编码。如果它存在?如果它确实那么我也想给出相应的citi(es)。但是现在我不想每次调用此函数时一次又一次地读取CSV文件。这就是我想将数据保存到内存中的对象的原因。 scala有没有办法做到这一点?如何检查对象是否已存在于内存中或是否必须创建它?

是否有人提示我应该寻找什么?

1 个答案:

答案 0 :(得分:1)

创建地图后,它将保留在内存中,直到它被垃圾回收。如果没有对象引用您的地图,垃圾收集器可能会删除它。您可以在程序周围传递对地图的引用,以便永远不会删除它,也不会将其设置为静态。

在Java中你可以将它作为一个静态成员放在一个类中 - Scala中的并行是将它放在一个单独的对象中,它看起来像这样:

object storedData {
  lazy val data : Map[...] = // read file
}

然后,您可以通过从程序中的任何位置调用storedData.data来读取此内容。