如何检索匹配条件的List的最大元素?

时间:2017-09-22 14:58:22

标签: java lambda

Java 8和Lambdas的新手。这就是我所拥有的:

一个简单的凭证类:

public interface Credentials {

    boolean isPasswordEnabled();

    String getCreatedDate();
}

返回凭据列表的简单服务:

List<Credentials> credentials =  credentialsService.getCredentials();

我需要获取最近创建的密码,该密码也已启用。这是我到目前为止所做的,但这只涉及日期部分。如何集成isPasswordEnabled检查?

Credentials latestCredentials = Collections.max(credentials, Comparator.comparing(c -> c.getCreatedDate()));

2 个答案:

答案 0 :(得分:1)

使用此:

credentials.stream()
.filter(Credentials::isPasswordEnabled)
.max(Comparator.comparing(Credentials::getCreatedDate))

答案 1 :(得分:1)

使用过滤器,然后找到max:

Optional

请注意,由于.get()返回credentials,您需要调用NoSuchElementException以获取最大值。

如果没有已启用的元素(或.get()为空),您将获得.orElseThrow(SomeException::new)。如果您想为此案例抛出特定的例外情况,而不是拨打import pandas as pd df = pd.read_excel(inputfile) 来电话'An error occurred: Length mismatch: Expected axis has 17 elements, new values have 12 elements'