可选用法问题(java 8)

时间:2017-04-28 12:52:47

标签: java

我正在尝试使用以下代码的流。我的问题是我的回报价值。 这段代码返回一个Optional而不是布尔值:

ogps.stream().filter(elt -> (elt.getLineNumbers() != null && !vg.getLineNumbers().isEmpty())).findFirst();
你能指导我吗?谢谢

//The original code
public static boolean isOrderOk(List<OrderGroup> ogps) {
        if (ogps == null || ogps.isEmpty()) {
            return true;
        }
        for (OrderGroup elt : ogps) {
            if (elt.getLineNumbers() != null && !vg.getLineNumbers().isEmpty()) {
                return false;
            }
        }
        return true;
}

//The new code with stream usage
public static boolean isOrderOk(List<OrderGroup> ogps) {
        if (ogps == null || ogps.isEmpty()) {
            return true;
        }
        return ogps.stream()
                .filter(elt -> (elt.getLineNumbers() != null && !vg.getLineNumbers().isEmpty()))
                .findFirst();
        return true;
}

2 个答案:

答案 0 :(得分:1)

你可能正在寻找类似的东西:

public static boolean isOrderOk(List<OrderGroup> ogps) {
    if (ogps == null || ogps.isEmpty()) {
        return true;
    }
    return ! ogps.stream()
        .anyMatch(elt -> (elt.getLineNumbers() != null && !vg.getLineNumbers().isEmpty()));
}

答案 1 :(得分:0)

原因是您正在使用findFirst类的stream方法,并返回Optional类型,因为您可以看到here