Java - >斯卡拉,收藏表演

时间:2012-10-20 00:43:13

标签: java scala collections

在Java中,根据集合的用法,我们不使用相同的实现(即ArrayList vs LinkedList)。

来自Java背景,有人可以告诉我应该了解Scala集合和性能注意事项吗?

似乎Scala List的不可变版本是某种不可变的LinkedList。 我在Coursera的Martin Odersky课程之后理解这些概念。 以同样的方式,我理解为什么prepend比追加更有效,特别是当你有一个不可变列表时。

我想知道关于Scala收集表演的所有(或大多数)这些棘手的事情,所以我自己并不是很难找到它。有人能帮助我吗?

由于

2 个答案:

答案 0 :(得分:8)

有一份文件describes collection performance characteristics。除此之外,您真的应该在微基准测试中测试您的用例。在某些情况下,Scala集合在性能上与Java非常接近;在其他方面存在差距(例如地图);在其他情况下,没有Java模拟,并且不可变与可变的比较在很大程度上取决于您如何使用该集合(显然,重度突变有利于可变集合,以及大量重用/复制有利于不可变集合)。

答案 1 :(得分:1)

这并没有具体回答你的问题,但对于一般用途,我认为你不会注意到java和scala集合之间的区别。我至少没有注意到它:)一般来说,我认为人们过早地通过担心这些事情进行优化(尽管你可能有一个完全有效的用例需要优化)。

就个人而言,我更喜欢使用scala集合而不是Java集合,因为我从未遇到过性能问题,所以我从未真正研究过java vs scala基准测试。

正如Rex所说,如果你担心它(或者只是想知道),那么为你的特定用例设置基准将是有用的。