JAVA——MapSet用法

Posted 我永远信仰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA——MapSet用法相关的知识,希望对你有一定的参考价值。

Map和Set都是哈希结构体的一种。

常见的三种哈希结构:

  • 数组
  • set(集合)
  • map(映射)

  • 详解点击这里,关于哈希表,一定要了解这些


    map和set的常用方法

    map:
    在这里插入图片描述
    set:
    在这里插入图片描述

    初始化

    //map
    Map<String, Integer> mp = new HashMap<>();
    //set
    Set<String> st = new HashSet<>();
    

    添加
    map:put();
    set:add();
    map、set添加是有返回值的。
    map返回值与 key 关联的旧值;如果 key 没有任何映射关系,则返回 null。(返回 null 还可能表示该映射之前将 null 与 key 关联。)
    set返回一个布尔值,表示添加是否成功。

    		//map
    		mp.put("张三", 14);
            Integer r = mp.put("张三", 15);
            System.out.println(r);//输出14
    		//set
    		st.add("王二");
            boolean r = st.add("张三");
            boolean r1 = st.add("张三");
            System.out.println(r);//true
            System.out.println(r1);//false
    

    删除
    map:remove();
    set:remove();
    从此映射中移除指定键的映射关系(如果存在)。

    		//map
    		mp.put("张三", 14);
    		
            Integer r = mp.remove("张三");//r=14
            Integer r1 = mp.remove("李四");//r1=null
            
            //set
            st.add("张三");
            
            boolean r = st.remove("张三");//r=true
            boolean r1 = st.remove("ads");//r1=false
    

    查找

    map:

    是否存在:
    在这里插入图片描述

    		mp.put("张三", 14);
    		
            boolean r = mp.containsKey("张三");//true
            boolean r1 = mp.containsValue(99);//false
    

    用key获对应的value
    在这里插入图片描述

    mp.put("张三1", 14);
    System.out.println(mp.get("张三1"));//14
    

    mp.getOrDefault(key,defalut_value)
    查找key是否存在于map中,如果存在,则返回map里key对应的value,如果不存在则返回default_value

    mp.put("张三1", 14);
    int num=mp.getOrDefault("张三1",0);  //num=14
    int num=mp.getOrDefault("张三11",0);  //num=0
    

    set:
    在这里插入图片描述

    		st.add("张三");
            
            boolean r = st.contains("张三");
            boolean r1 = st.contains("222");//false
    
    		//containsAll
    		st.add("张三");
            st.add("李四");
            String[] arr = new String[2];
            arr[0]="张三";
            arr[1]="李四";
            boolean r = st.containsAll(Arrays.asList(arr));
            System.out.println(r);//true
    

    修改

    map:

    通过put添加的方式覆盖原有的值,

    int num=30;
    mp.put("张三1", num);
    num+=num;
    mp.put("张三1", num);
    System.out.println(mp.get("张三1"));//输出60
    

    set:
    不支持修改,直接删除后增加新的元素。

    遍历:

    map:
    方法1:keyset遍历
    在这里插入图片描述

    		mp.put("张三1", 14);
            mp.put("张三2", 28);
            mp.put("张三3", 6);
    
            for (String key : mp.keySet()) {
                int value = mp.get(key);
                System.out.println("key="+key+",value="+value);
            }
    

    方法2:Entry遍历在这里插入图片描述

    		mp.put("张三1", 14);
            mp.put("张三2", 28);
            mp.put("张三3", 6);
    
            for (Map.Entry<String,Integer> entry: mp.entrySet()){
                String key = entry.getKey();
                int value = entry.getValue();
                System.out.println("key="+key+",value="+value);
            }
    		/*
    		key=张三3,value=6
    		key=张三1,value=14
    		key=张三2,value=28
    		*/
    
    

以上是关于JAVA——MapSet用法的主要内容,如果未能解决你的问题,请参考以下文章

java容器类3:set/HastSet/MapSet深入解读

创建片段而不从 java 代码实例化它

Java习惯用法总结

JavaScript判断循环MapSet

c_cpp 加载源图像固定用法(代码片段,不全)

Java中枚举的写法和用法