两者之间有什么区别吗?

MyObject myWantedObj = Iterables.tryFind(myListOfObjects, new Predicate<MyObject>() {
    public boolean apply(MyObject myObj) {
        return myObj.getSomeAttribute().equals(someFinalVariable);
    }
}).orNull();




MyObject myWantedObj = FluentIterable.from(myListOfObjects).firstMatch(new Predicate<MyObject>() {
    public boolean apply(MyObject myObj) {
        return myObj.getSomeAttribute().equals(someFinalVariable);
    }
}).orNull();


Iterables.tryFindFluentIterable.firstMatch Javadoc等于:


返回一个Optional,其中包含可迭代的第一个满足给定谓词的元素(如果存在)。


我想念什么吗?

最佳答案

Iterables.tryFind()FluentIterable.firstMatch()早很多。如果您只是执行一个操作(如您的示例中所示),那么使用哪个并不重要。如果我们首先创建Iterables(事后见闻是20/20),我们可能永远也不会创建FluentIterable类。

当您将几个功能类型的步骤链接在一起时,FluentIterable的强大功能就来了。例如:

   FluentIterable
       .from(database.getClientList())
       .filter(activeInLastMonth())
       .transform(Functions.toStringFunction())
       .limit(10)
       .toList();

09-13 00:51