从一组元素中选择一个满足条件的所有元素

问题描述:

比方说,我有一个包含一些元素的列表,并且我想选择所有不满足特定条件的元素。我在想是这样的:从一组元素中选择一个满足条件的所有元素

public void choose(Condition c) { 
    choose all elements that satisfy c.CheckCondition(elem) 
} 

不过,我认为这是非常unelegant并强制用户实现Condition对象与 一定的功能元素是否满足条件,将检查。 如果它是C++我会发送一个函数指针作为参数,但它不可能在Java中。 我曾考虑过使用Comparable对象,但这并不好,因为我必须在我的类中实现它,而不是从用户那里获取它。

这个问题的任何其他优雅的想法?

谢谢!

+0

见http://stackoverflow.com/questions/122105/java-what-is-the -best路 - 至 - 过滤器 - 一个集合。 – 2011-12-13 18:06:17

我认为你提出的是比较高雅的,尤其是当使用泛型和匿名类组合:

set.choose(new Condition<Elem>() { 
    boolean checkCondition(Elem elem) { 
    ... 
    } 
}); 

不是现在 - Java 7仍然没有关闭(C中的“函数指针”)。它可能以Java 8发布。与此同时,我们仍然坚持将我们的谓词编写成类...

但是,您可能对番石榴图书馆感兴趣。它由Google开发,并且已经提供了用于过滤,映射或变换集合元素的类。 http://code.google.com/p/guava-libraries/