是否有任何区别?
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
,其中包含iterable中第一个满足给定谓词的元素(如果存在这样的元素)。
我错过了什么?
答案 0 :(得分:9)
Iterables.tryFind()
提前约会FluentIterable.firstMatch()
。如果您只是进行单一操作(如您的示例所示),那么您使用哪种操作并不重要。如果我们先创建Iterables
(后见之明是20/20),我们可能永远不会创建FluentIterable
类。
当您将多个功能类型的步骤链接在一起时,FluentIterable
的力量就会出现。例如:
FluentIterable
.from(database.getClientList())
.filter(activeInLastMonth())
.transform(Functions.toStringFunction())
.limit(10)
.toList();