加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java 8中,如何应用此过滤器?

发布时间:2020-12-15 04:31:29 所属栏目:Java 来源:网络整理
导读:首先,我为问题的标题道歉,我想不出更好的方式来表达它,如果我应该解决它,请告诉我. 基本上我是一个Java程序员,过于使用命令式编程,发现(和玩)Java 8的新功能. 我写的方法非常简单,而且我的工作正常,我只是想知道是否有一种更“功能”的解决方法. 基本上我收
首先,我为问题的标题道歉,我想不出更好的方式来表达它,如果我应该解决它,请告诉我.

基本上我是一个Java程序员,过于使用命令式编程,发现(和玩)Java 8的新功能.

我写的方法非常简单,而且我的工作正常,我只是想知道是否有一种更“功能”的解决方法.

基本上我收到一个User列表,需要返回那些具有Status = INVALID的用户的百分比.

所以这就是我到目前为止所做的:

public static double getFailedPercentage(List<User> users){
    Long failedCount = users.stream().filter(user -> User.Status.INVALID.equals(user.getStatus())).collect(counting());
    return (failedCount * 100) / users.size();
}

如果可能的话,我想把它作为一个班轮,我知道这可能是过分思考,但我想知道我使用的语言的限制和可能性.

在此先感谢您的时间.

解决方法

以下应该有效

return users.stream()
            .mapToInt(user -> User.Status.INVALID.equals(user.getStatus()) ? 100 : 0)
            .average()
            .getAsDouble();

它将Status映射到0或100,然后取平均值.这意味着对于每个INVALID用户,你有一个100,对于你有0的每个其他用户,平均值就是你请求的确切结果.

100乘以你所乘的100.如果要使用百分比表示百分比,请将其替换为1.

https://docs.oracle.com/javase/tutorial/collections/streams/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读