是否有Java等价于Javascript';s";“一些”;方法?

是否有Java等价于Javascript';s";“一些”;方法?,java,javascript,collections,guava,Java,Javascript,Collections,Guava,我有一个集合,我想知道是否至少有一个元素满足某些条件。本质上,在JavaScript中,我想在集合上做什么 Java没有内置此功能。接受函数指针作为参数,这不是Java本机支持的。但是,在Java中使用循环和回调功能的接口来模拟的功能应该相当简单。您可以从Apache使用: 或在内联版本中: List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13) CollectionUtils.exists(primes, new Predi

我有一个集合,我想知道是否至少有一个元素满足某些条件。本质上,在JavaScript中,我想在集合上做什么

Java没有内置此功能。接受函数指针作为参数,这不是Java本机支持的。但是,在Java中使用循环和回调功能的接口来模拟的功能应该相当简单。

您可以从Apache使用:

或在内联版本中:

List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13)
CollectionUtils.exists(primes, new Predicate() {
    public boolean evaluate(Object object) {
        return ((Integer)object) % 2 == 0;
    }
});
签出的类及其实现

与另一个答案中的Commons Collections示例大致相同,但已泛化:

List<String> strings = Arrays.asList("ohai", "wat", "fuuuu", "kthxbai");
boolean well = Iterables.any(strings, new Predicate<String>() {
    @Override public boolean apply(@Nullable String s) {
        return s.equalsIgnoreCase("fuuuu");
    }
});
System.out.printf("Do any match? %s%n", well ? "Yep" : "Nope");
List strings=Arrays.asList(“ohai”、“wat”、“fuuuu”、“kthxbai”);
布尔well=Iterables.any(字符串,新谓词(){
@重写公共布尔应用(@Nullable String s){
返回s.equalsIgnoreCase(“fuuuu”);
}
});
System.out.printf(“有匹配吗?%s%n”,嗯?“是”:“没有”);

从Java 8开始,您可以将集合转换为流并使用,如下例所示

import java.util.Arrays;
import java.util.List;

public class SomeExample {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, -6, 7);
        boolean hasNegative = list.stream().anyMatch(x -> x < 0);
        if (hasNegative) {
            System.out.println("List contains some negative number");
        }
        else {
            System.out.println("List does not contain any negative number");
        }
    }
}
导入java.util.array;
导入java.util.List;
公共类示例{
公共静态void main(字符串[]args){
List=Arrays.asList(1,2,3,4,5,-6,7);
布尔值hasNegative=list.stream().anyMatch(x->x<0);
如果(负){
System.out.println(“列表包含一些负数”);
}
否则{
System.out.println(“列表不包含任何负数”);
}
}
}

另一个支持此方法的第三方库是Google Guava,它有。Guava支持泛型Java8将有lambdas。此外,SAM类现在被称为函数接口。+1缺少泛型是commons集合的一个主要缺点。@Anony Mouse Yeah;这是一种痛苦,尽管我仍然使用它:/它接受函数,但这与函数指针不同。
List(3,5,7,11,13,17).exists(_ % 2 == 0)
List<String> strings = Arrays.asList("ohai", "wat", "fuuuu", "kthxbai");
boolean well = Iterables.any(strings, new Predicate<String>() {
    @Override public boolean apply(@Nullable String s) {
        return s.equalsIgnoreCase("fuuuu");
    }
});
System.out.printf("Do any match? %s%n", well ? "Yep" : "Nope");
import java.util.Arrays;
import java.util.List;

public class SomeExample {
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, -6, 7);
        boolean hasNegative = list.stream().anyMatch(x -> x < 0);
        if (hasNegative) {
            System.out.println("List contains some negative number");
        }
        else {
            System.out.println("List does not contain any negative number");
        }
    }
}