今天我在我的博客中写了以下文章,介绍如何使用 Google Guavas Predicates 来增加设计的可扩展性。这让我问自己以下问题:“对这个解决方案的需求是由更深层次的设计缺陷引起的吗?”。是否有另一种“更清洁”的方式来实现这种可扩展性?我只是想得太深了吗?
问问题
1702 次
1 回答
4
Google Guava向 Java 添加了一些本应存在但没有的东西(其中许多包含在 v7 中)。
IMO Guava 往往非常干净和快速。将 GuavaComparisonChain
与(例如)Apache CommonsCompareToBuilder
类进行比较。两者基本上做同样的事情。虽然 Apache 对新手来说非常简单易懂,但 Guava 是更快/更清洁/更少资源密集型(更好?)的方法。
就Predicate
s 而言,它们提供了一个功能并且做得很好,尤其是当你将它与所有其他 Guava 的东西(如Iterators.filter
.
不过,在使用 Guava 工具之前确实需要了解它们。例如,如果您要多次遍历过滤后的列表并且您Predicate
的成本(CPU/内存/时间)不可忽略,那么您最好循环一次并Collection
首先存储值,如其中一些方法只是将给定的值包装Iterable
到一个类中,该类的next()
函数只调用next()
未过滤的Iterable
值,直到找到一个通过过滤器的条目并返回它。
所以,是的,番石榴非常有用。包括Predicate
s 和Iterables
和Collections2
过滤等。但是,如果您发现代码需要优化,了解幕后发生的事情以及可能需要处理的问题或性能影响总是有帮助的。
于 2013-06-03T05:03:23.027 回答