假设我有一个List收件人,地址的属性为
1. ID
2.姓名
3.国家
然后我有一个get方法来获取ID
public Address get(Integer id) {
for (Address myAddress : addresses) {
if (myAddress.getId() == id) {
return myAddress;
}
}
return null;
}
这就是没有lambdas的情况 如何使用lambdas返回地址?
答案 0 :(得分:1)
根据你的上下文应该是这样的:
// Find any address that matches
addresses.stream().filter(a -> a.getId() == id).findAny();
或
// Find the first address that matches
addresses.stream().filter(a -> a.getId() == id).findFirst();
如果您希望使用addresses.parallelStream().filter(a -> a.getId() == id).findAny()
并行化搜索,第一种方法非常有趣,它将比第二种方法快得多,因为它会在我们得到结果后立即停止搜索。第二种方法更有意思,如果你不打算并行化它,这似乎就是你的情况。
最后,它给出了:
public Address get(Integer id) {
return addresses.stream()
.filter(a -> a.getId() == id)
.findFirst().orElse(null);
}
答案 1 :(得分:0)
我会这样做:
public Address get(Integer id) {
return addresses.stream()
.filter(a -> a.getId().equals(id))
.findFirst()
.orElse(null);
}
干杯