美文网首页
遍历Hashmap方式以及本地变量问题

遍历Hashmap方式以及本地变量问题

作者: 暗夜行者 | 来源:发表于2019-03-11 15:05 被阅读0次

    我想遍历hashmap这种操作,就像一些Linux命令一样,记忆了一百遍然而在用的时候还是会忘吧。今天痛下决心记录一下,只记录两种推荐的方式:

    当使用key和value时:

    Map<Object,Object> map = new HashMap<>();

    for (Entry<Object,Object> entry : map.entrySet()) {

           entry.getKey();

           entry.getValue();

    }

    当仅使用key时候:

    for (String key : map.keySet()) {  // action }

    可以使用foreach表达式,但是如果循环内部用到的变量,这个变量的要求是:

    Local variable *** defined in an enclosing scope must be final or effectively final

    该规则也会在内部类使用的时候发生,本次例子如下:

    List<Object> empList = service.method();

    if(CollectionUtils.isEmpty(empList)) {

    Map<Long,Map<String,Object>> employeeViewMapList=new HashMap<>();

    //操作employeeViewMapList

    employeeViewMapList.forEach((k,emap) -> empList.add(emap));

    }

    这个时候发生一件事,当返回是空的时候,你就要把empList初始化一下,然而对empList的再次初始化行为会被认为不是final等效的,所以这种写法无法通过,会报如上错误。

    这个时候应该把foreach的写法变为 entrySet的形式替代:

    for(Entry<Long,Map<String,Object>> entry : employeeViewMapList.entrySet()) {

        empList.add(entry.getValue());

    }

    不过foreach的遍历方式: items.forEach((k,v)->System.out.println("key : " + k + "; value : " + v));真的好用,还是要记住。

    相关文章

      网友评论

          本文标题:遍历Hashmap方式以及本地变量问题

          本文链接:https://www.haomeiwen.com/subject/qdqbpqtx.html