Map的常用操作(遍历、put):

1.Map遍历的三种方法:
   
方法一 在for-each循环中使用entries来遍历
这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。
方法二 在for-each循环中遍历keys或values。
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
方法三使用Iterator遍历
该种方式看起来冗余却有其优点所在。首先,在老版本java中这是惟一遍历map的方式。另一个好处是,你可以在遍历时调用iterator.remove()来删除entries,另两个方法则不能。根据javadoc的说明,如果在for-each遍历中尝试使用此方法,结果是不可预测的。

 

代码如下:

package com.learn.common;


import java.util.HashMap;
import java.util.Map;


public class mapExa {
    public static Map<String,Object> getAmap(){
        Map<String,Object>map=new HashMap<>();
        map.put("a",1);
        map.put("b",8);
        map.put("c",5);
        map.put("d",3);
        map.put("e",9);
        map.put("f",2);
        map.put("g",11);
        return map;
    }
package com.learn.Map;


import com.learn.common.mapExa;


import java.util.Iterator;
import java.util.Map;




public class mapOperation {
    public static void main(String[] args) {
        Map<String,Object> map= mapExa.getAmap();
        //遍历方法1
        System.out.println("遍历方法1结果");
        Map1Traversal(map);
        //遍历方法2
        System.out.println("遍历方法2结果");
        Map2Traversal(map);
        //遍历方法3
        System.out.println("遍历方法3结果");
        Map3Traversal(map);
        //遍历方法4
        System.out.println("遍历方法4结果");
        Map4Traversal(map);
    }


    //关于将map遍历方法1  //注意foreach中不能检查空对象 否则会报错
    public static void Map1Traversal(Map<String,Object>map){
        for (Map.Entry<String,Object> entry:map.entrySet()) {
            System.out.println("entry  -->  key:" +entry.getKey()+"  value:" +entry.getValue());
        }
    }
    //关于将map遍历方法2 适用于只拿到 key或者只拿到value
    public static void Map2Traversal(Map<String,Object>map){
        for (String key:map.keySet()) {
            System.out.println("entry  -->  key:" +key);
        }
        for (Object value:map.values()) {
            System.out.println("entry  -->  value:" +value);
        }
    }
    //关于遍历方法3 使用Iterable  遍历器
    public static void Map3Traversal(Map<String,Object>map) {
        Iterator<Map.Entry<String,Object>> iterator= (Iterator<Map.Entry<String, Object>>) map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<String,Object> entry=iterator.next();
            System.out.println("entry  -->  key:"+entry.getKey());
            System.out.println("entry  -->  value:"+entry.getValue());
        }
    }
    //遍历方法4
    public static void Map4Traversal(Map<String,Object>map) {
        for (String key:map.keySet()){
            System.out.println("entry  -->  key:"+key);
            System.out.println("entry  -->  value:"+map.get(key));
        }
    }
    }

运行结果:

遍历方法1结果

entry  -->  key:a  value:1

entry  -->  key:b  value:8

entry  -->  key:c  value:5

entry  -->  key:d  value:3

entry  -->  key:e  value:9

entry  -->  key:f  value:2

entry  -->  key:g  value:11

遍历方法2结果

entry  -->  key:a

entry  -->  key:b

entry  -->  key:c

entry  -->  key:d

entry  -->  key:e

entry  -->  key:f

entry  -->  key:g

entry  -->  value:1

entry  -->  value:8

entry  -->  value:5

entry  -->  value:3

entry  -->  value:9

entry  -->  value:2

entry  -->  value:11

遍历方法3结果

entry  -->  key:a

entry  -->  value:1

entry  -->  key:b

entry  -->  value:8

entry  -->  key:c

entry  -->  value:5

entry  -->  key:d

entry  -->  value:3

entry  -->  key:e

entry  -->  value:9

entry  -->  key:f

entry  -->  value:2

entry  -->  key:g

entry  -->  value:11

遍历方法4结果

entry  -->  key:a

entry  -->  value:1

entry  -->  key:b

entry  -->  value:8

entry  -->  key:c

entry  -->  value:5

entry  -->  key:d

entry  -->  value:3

entry  -->  key:e

entry  -->  value:9

entry  -->  key:f

entry  -->  value:2

entry  -->  key:g

entry  -->  value:11

2.Map的compute方法:

    作用 对特定key的键值对进行处理。    

    示例代码,比哪里Map,打印所有值大于4的键值对并求和。

package com.learn.common;

import java.util.HashMap;
import java.util.Map;


public class mapExa {
    public static Map<String,Object> getAmap(){
        Map<String,Object>map=new HashMap<>();
        map.put("a",1);
        map.put("b",8);
        map.put("c",5);
        map.put("d",3);
        map.put("e",9);
        map.put("f",2);
        map.put("g",11);
        return map;
    }
public static void MapCompute(Map<String,Object>map) {
    int result=0;
    System.out.println("大于4的值:");
    for (String key1:map.keySet()){
        result+=Integer.parseInt(
                map.compute(key1,(key,value)->{
                    if (Integer.parseInt(value.toString())>4){
                        System.out.println("key : "+key+"  "+" value:  "+value);
                    }
                    return value;
                }).toString()
        );
    }
    System.out.println("和:"+result);
}

结果:

 

2.Map的判空方法:

   1.使用Map的isEmpty()方法:

       源码:

       

public boolean isEmpty() {

    return size() == 0;

}

      可以看到,使用isEmpty方法来判空时,必须是实例化的Map类型,也就是说如果map为null的话就会报空指针错误。

  

3.Map的put()和putIfAbsent():

   

   如名称所示一个是不管之前有没有这个key就直接放进去,如果之前有的话则会给覆盖掉。一个是如果没有这个Key,则放进去。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值