两者之间有什么区别吗?
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.tryFind和FluentIterable.firstMatch Javadoc等于:
返回一个
Optional
,其中包含可迭代的第一个满足给定谓词的元素(如果存在)。我想念什么吗?
最佳答案
Iterables.tryFind()
比FluentIterable.firstMatch()
早很多。如果您只是执行一个操作(如您的示例中所示),那么使用哪个并不重要。如果我们首先创建Iterables
(事后见闻是20/20),我们可能永远也不会创建FluentIterable
类。
当您将几个功能类型的步骤链接在一起时,FluentIterable
的强大功能就来了。例如:
FluentIterable
.from(database.getClientList())
.filter(activeInLastMonth())
.transform(Functions.toStringFunction())
.limit(10)
.toList();