2010-10-13 116 views
5

我已经继承了一个团队和一个(Java)代码库。你推荐什么Java Collections库?

代码库使用了很多明确的for each循环。我想用Commons Collections Transformers和Predicates以及它的收集和转换方法替换那些(编辑:在未来的代码中)。

但是,Commons Collection不是通用的。我的代码库的其余部分,无论它缺少什么,我都不想引入大量的投射。

因此,我正在寻找Commons-Collections with Generics(http://sourceforge.net/projects/collections/)和Guava(以前称为Google Collections)(http://code.google.com/p /番石榴的库/)。

问题一:这些库中的一个或两个是否被普遍认为对生产有用?你在生产中使用吗?

问题二:这两个问题,你建议?任何使用过的人的答案都很棒,所有使用这两者的人的答案都会更好!

最后,我的团队包括中高级承包商和Java中级和初级员工(编辑:但具有多年非OO编程经验)的组合。所以我不想介绍一个以上的集合库,而且我确实希望有一个对我的团队来说不会太难。

谢谢!

编辑:我想替换显式循环,因为样板的数量模糊和压倒实际的业务代码。我有嵌套的循环调用嵌套循环的函数,所有这些都是做单行的事情。通过适当的介绍和培训,我觉得我的团队会发现收集/变压器/谓词方法更清晰,更清晰,写得更快,并且更易于阅读。

+1

Commons Collections如果不希望每个人都跳到Guava,那么他们确实需要拿出一个Java5版本。我并不介意在Commons Lang中使用泛型和可变参数,但对于收藏库来说,这是非常重要的。 – Thilo 2010-10-13 03:07:46

+3

相关:[Commons Collections vs Google Collections](http://stackoverflow.com/questions/1444437/apache-commons-vs-google-collections)。仍然是实际的IMO。也看[这部电影](http://www.youtube.com/watch?v=ZeO_J2OcHYM)。 – BalusC 2010-10-13 03:08:11

+2

为了替换代码或者因为你今天每个''风格都有缺陷,你在替换代码吗? – 2010-10-13 03:09:32

回答

4

我在生产中使用Google收藏并从未遇到过问题。让你希望java有函数指针,但他的设计很好。即使他像Lists.newArrayList这样的小事情也成为新增列表的标准方式。

+0

“让你希望Java有函数指针”。 Java 8.手指交叉。 – Thilo 2010-10-13 03:13:11

+1

@Thilo:也许是Java 10.也许吧。 – 2010-10-13 03:32:55

+0

JDK7(现在8,我猜)“包含一个新的包java.dyn,它包含与Java平台中的动态语言支持相关的类。包中的一个类是MethodHandle。方法句柄是一个简单的对象类型为java.dyn.MethodHandle的匿名封装对JVM方法的引用。方法句柄可调用,就像对方法的命名引用一样。“ http://www.oracle.com/technetwork/issue-archive/2010/10-may/o30java-099612.html – Thilo 2010-10-16 05:42:02

2

看来您并不是在寻找一个Collection库,而是一个以功能方式处理现有集合的库。

我自己写了这样一个库,但它不是开源的(它只在我公司内部使用),它可能不是最好的设计。

一个目标相同的图书馆似乎很有希望:lambdaj。我自己并没有使用它,但是如果我当时知道lambdaj的存在,我想我不会写我的图书馆。

相关问题