Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一组元素中选择,所有满足条件的元素_Java - Fatal编程技术网

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

Java 在一组元素中选择,所有满足条件的元素,java,Java,假设我有一个包含一些元素的列表,我想选择所有不满足特定条件的元素。我在想这样的事情: public void choose(Condition c) { choose all elements that satisfy c.CheckCondition(elem) } 然而,我认为这是非常不合法的,它迫使用户使用 检查元素是否满足条件的特定函数。 如果是C++,我会把一个函数的指针作为一个参数发送,但在java中是不可能的。 我曾考虑过使用Comparable对象,但这并不好,因为我

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

public void choose(Condition c) {
     choose all elements that satisfy c.CheckCondition(elem)
}
然而,我认为这是非常不合法的,它迫使用户使用 检查元素是否满足条件的特定函数。 如果是C++,我会把一个函数的指针作为一个参数发送,但在java中是不可能的。 我曾考虑过使用
Comparable
对象,但这并不好,因为我必须在类中实现它,而不是从用户那里获得它

对这个问题还有什么好主意吗


谢谢

现在还没有-Java 7仍然没有闭包(C中的“函数指针”)。它可能有Java8版本。同时,我们还在把谓词写成类

但你可能对番石榴图书馆感兴趣。它由谷歌开发,已经提供了过滤、映射或转换集合元素的类。

我认为您的建议相当优雅,尤其是与泛型和匿名类结合使用时:

set.choose(new Condition<Elem>() {
  boolean checkCondition(Elem elem) {
    ...
  }
});
set.choose(新条件(){
布尔校验条件(Elem Elem){
...
}
});
请参阅。