有许多共同的概念:
番石榴和中的相同模式。那有什么区别呢?这两个库是否都与模式一致?扩展的易用性好吗?
因此,我想听听使用这两种框架的人对这些框架的比较。
发布于 2011-07-06 17:10:54
谷歌番石榴是一个非常棒的图书馆,毫无疑问。但是,它是用Java实现的,并且受到了所有的限制,这意味着:
在标准库中没有不变的集合接口
番石榴还必须存在于Java的标准集合库中,因此很少有第三方库公开与番石榴兼容的函数文本或使用特定于番石榴的集合类型。这会对您使用的每个第三方库造成阻抗不匹配。例如,您通常希望将返回的集合从此类库转换为适当的番石榴不变集合--特别是在多线程环境中工作的情况下。
Scala集合有一个更好地集成到语言中的设计,您会发现它们在Scala标准库和在scala中实现的第三方产品中得到了广泛的使用。Scala集合在默认情况下也是不可变的,因此最终得到的代码要安全得多,不需要额外的一层防御性包装。
如果您可以使用Scala,那么这样做,它有许多优点,不仅仅是集合框架。如果您必须使用Java,那么Guava是一个很好的选择,特别是考虑到Scala集合没有Scala提供的语言特性并不容易使用。
在一个混合项目中,Guava集合在Scala内部是完全可用的,但是该语言还提供了一些机制,允许您像Scala自己的集合一样使用Java集合(包括Guava集合,这些集合公开相同的接口)。
发布于 2011-07-06 15:18:26
现在,我在所有的java项目中都使用了番石榴。它为具有类似模式的java集合提供了很好的功能触觉。
然而,在java中编写闭包意味着直接定义大量的匿名类,这既冗长又乏味。
Scala集合在设计(由于特性导致的部分实现的级联)和功能方面仍然优越。只需实现一小组方法,就可以轻松地创建自己的集合,并获得scala集合的所有优点。
发布于 2011-07-06 21:10:22
其他人已经回答了你的问题,但我认为你错过了一个有趣的选择,Functional Java库。它忽略了Java,并提供了外观和行为类似于简化Scala集合的不可变集合。
https://stackoverflow.com/questions/6598498
复制相似问题