如何使用lambdas java返回对象

时间:2016-05-17 21:34:23

标签: java lambda

假设我有一个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返回地址?

2 个答案:

答案 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);
}

干杯