今天,我在我的博客中写了下面的article,关于如何使用Google Guavas谓词来增加设计的可扩展性。这让我问自己以下问题:“这种解决方案的需要是由更深层次的设计缺陷引起的吗?”有没有其他“更干净”的方法来实现这种类型的可扩展性?我是不是想得太深了?
发布于 2013-06-03 13:03:23
Google为Guava添加了几个本应该存在但却没有的东西(其中许多都包含在v7中)。
IMO Guava往往是非常干净和快速的。将Guava的ComparisonChain与(例如) Apache Commons CompareToBuilder类进行比较。两者本质上做的是一样的事情。虽然Apache的非常简单和容易让新手理解,但Guava的更快/更干净/更少资源密集(更好?)接近。
就Predicate而言,它们提供了一个功能,而且做得很好,特别是当您将它与Iterators.filter等所有其他Guava工具组合在一起时。
不过,在使用Guava工具之前,确实需要了解它们。例如,如果您打算多次遍历过滤列表,并且您的Predicate具有不可忽略的开销(CPU/内存/时间),那么您最好先遍历一次并将值存储在Collection中,因为其中一些方法只是将给定的Iterable包装到一个类中,该类的next()函数只是在未过滤的Iterable上调用next(),直到它找到一个通过过滤器并返回的条目。
所以,是的,芭乐非常有用。包括Predicate、Iterables和Collections2过滤等。然而,如果您发现代码需要优化,了解幕后发生了什么,以及您可能需要处理哪些陷阱或性能影响,这总是很有帮助的。
https://stackoverflow.com/questions/16890046
复制相似问题