在Java程序中,我有一个我想根据特定属性进行过滤的bean列表。使用Google Guava过滤JavaBeans的列表
例如,假设我有一个Person,一个JavaBean的列表,其中Person有很多属性,其中包括'name'。
我也有一个名字列表。
现在我想查找名称在名称列表中的所有人员。
使用Google Guava执行此过滤器的最佳方法是什么?
到目前为止,我已经想过将番石榴和Apache beanutils结合起来,但看起来并不高雅。
我也在这里找到了一个反射扩展库:http://code.google.com/p/guava-reflection/,但我不确定如何使用它(几乎没有文档)。
有什么想法?
p.s.你能告诉我真的想念Python列表理解吗?
这个解决方案和我的主要区别在于,这个解决方案创建了一个包含过滤人员的新列表,而我的原始列表创建了一个视图。无论哪一个都是可取的取决于用例。 – 2011-12-27 08:04:44
是的,这取决于用例 - 但我会说在90%的用例中,可读性改进大于小性能优势。 – 2011-12-28 17:53:54
你似乎认为只有两个妥协方面是可读性和性能。正确性比两种(假定的)可读性和性能都重要得多。如果你这样做,你不仅要测试你的谓词逻辑,而且要测试你的过滤逻辑。你不必要地增加了一倍(至少因为引入了可变状态)可能出错的事情的数量。通过在代码库中进行筛选的次数乘以此数量......为什么要这样工作? – 2012-01-19 02:35:46