HashMap中一点小困惑

map中value所有的值都为true的时候 这个判断怎么写

 for (Map.Entry entry : isUpdateShow.entrySet()) {
                        if (entry.getValue().equals(true)) {
                          // do something
                        } else {
                            //do something
                        }
                    }

这个是循环 当其中一个value 等于true 会做些什么

但是 我的需求是 当map中所有valiue的值都为true 才会做些什么

阅读 2.7k
4 个回答

在遍历前设置一个flag=true,然后遍历map
如果元素=true,什么都不干,
如果元素=false,flag=false break
然后根据flag的值进行判断操作

isUpdateShow.values().stream().allMatch(Boolean::booleanValue)
if(isUpdateShow.values().contains(false) == false){
    //do something for true;
}

如果你用的是JDK8版本可以使用

isUpdateShow.values().stream().allMatch(Boolean::booleanValue)

否则可以使用设置 flag 的方式参见 Zany 的回答

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题