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

时间:2011-12-13 18:01:17

标签: java

假设我有一个包含一些元素的列表,我想选择所有不满足某个条件的人。我在考虑这样的事情:

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

然而,我认为它非常不优雅,它迫使用户实现Condition对象 某个函数将检查元素是否满足条件。 如果它是c ++我将发送一个指向函数的指针作为参数,但它在java中是不可能的。 我想过使用Comparable对象,但这并不好,因为我必须在我的课堂上实现它而不是从用户那里获取它。

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

谢谢!

2 个答案:

答案 0 :(得分:2)

目前还没有 - Java 7仍然没有闭包(C中的“函数指针”)。它可能来自Java 8.与此同时,我们仍然坚持将谓词编写为类......

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

答案 1 :(得分:0)

我认为你提出的建议相当优雅,特别是与泛型和匿名课程相结合时:

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