Tag: 函数式编程

使用Google Guava过滤JavaBeans列表

在Java程序中,我有一个我想根据特定属性过滤的bean列表。 例如,假设我有一个Person列表,一个JavaBean,其中Person有许多属性,其中包括’name’。 我还有一个名单。 现在我想找到名字列在名单中的所有人。 使用Google Guava执行此filter的最佳方法是什么? 到目前为止,我已经考虑过将Guava与Apache beanutils结合起来,但这看起来并不优雅。 我还在这里找到了一个reflection扩展库: http : //code.google.com/p/guava-reflection/ ,但我不确定如何使用它(这里有很少的文档)。 有什么想法吗? ps你能告诉我真的很想念Python列表理解吗?

什么是在java中使用的好的持久性集合框架?

通过持久性集合,我的意思是像clojure中的集合。 例如,我有一个包含元素(a,b,c)的列表。 使用普通列表,如果我添加d,我的原始列表将包含(a,b,c,d)作为其元素。 使用持久列表,当我调用list.add(d)时,我会返回一个新列表,其中包含(a,b,c,d)。 但是,实现尝试尽可能地在列表之间共享元素,因此它比仅返回原始列表的副本更具内存效率。 它还具有不可变的优点(如果我持有对原始列表的引用,那么它将始终返回原始的3个元素)。 这在其他地方解释得更好(例如http://en.wikipedia.org/wiki/Persistent_data_structure )。 无论如何,我的问题是……在java中提供此function的最佳库是什么? 我可以以某种方式使用clojure集合(其他通过直接使用clojure)?