Map集合

1.Map集合的概述

        Map集合是一种双列集合,每个元素包含两个数据。
        Map集合的每个元素的格式:key=value(键值对元素)。
        Map集合也被称为“键值对集合”。

        使用最多的Map集合是HashMap。

2.HashMap的使用

        HashMap:元素按照键是无序,不重复,无索引,值不做要求。

package boke;

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

public class HashMapDome {

    public static void main(String[] args) {
        //1、创建一个对象
        Map<String, Integer> maps = new HashMap<>();
        maps.put("苹果", 3);
        maps.put("梨", 5);
        maps.put("橘子", 1);
        maps.put("苹果", 10);
        System.out.println(maps);
    }
}

         运行结果:

3.LinkedHashMap的使用

        LinkedHashMap:元素按照键是有序,不重复,无索引,值不做要求。

package boke;

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapDome {
    public static void main(String[] args) {
        //1、创建一个对象
        Map<String,Integer> maps=new LinkedHashMap<>();
        maps.put("苹果",3);
        maps.put("梨",5);
        maps.put("橘子",1);
        maps.put("苹果",10);
        maps.put("香蕉",100);
        System.out.println(maps);
    }
}

 

4.Map集合的常用api

package boke;

import java.util.HashMap;

public class HashMapApi {
    public static void main(String[] args) {
        //创建HashMap
        //容量16,负载系数:0.75
        HashMap map = new HashMap();

        //添加元素
        map.put("k1","v1");
        map.put("k2","v2");
        System.out.println(map);
        map.put("k1","v100"); //key存在:value覆盖, 修改
        System.out.println(map);

        //putAll(Map) 把另外一个Map的数据添加到本Map
        HashMap map2 = new HashMap();
        map2.put("hello","world");
        map2.putAll(map);
        System.out.println(map2);

        //putIfAbsent(key,value): 如果key不存在, 添加, 如果存在,不执行任何操作
        map.putIfAbsent("k5","v5"); //key不存在, 添加
        map.putIfAbsent("k5","v500");  //key存在,不执行任何操作

        System.out.println(map);
        //删除  remove(key)  返回删除value, 如果key不存在, 返回: null
        Object val = map.remove("k1");
        System.out.println(val);
        System.out.println(map);

        // remove(key,value) 删除 key,value全部一样的删除
        boolean isOk = map.remove("k2", "v2");
        System.out.println(isOk);
        System.out.println(map);

        //clear() 清空
        map2.clear();
        System.out.println(map2);

        //查询
        //Object get(key) 根据key得到value
        //如果key不存在,返回null
        System.out.println(map.get("k5"));
        System.out.println(map.get("k6"));
        //getOrDefault(key,默认值) 根据key得到value
        //如果key不存在,返回默认值
        System.out.println(map.getOrDefault("k5","默认值"));
        System.out.println(map.getOrDefault("k6","默认值"));

        //判断
        //判断key是否存在 containsKey(key)
        System.out.println(map.containsKey("k5"));
        System.out.println(map.containsKey("k6"));

        //判断value是否存在  containsValue(vlaue)
        System.out.println(map.containsValue("v5"));
        System.out.println(map.containsValue("v6"));

        //判断集合是否map isEmpty()
        System.out.println(map.isEmpty());
        System.out.println(map2.isEmpty());

        //获取元素个数 size()
        System.out.println(map.size());
    }
}

5.遍历Map集合

        三种遍历方法:

        方式一:键找值

                先获取Map集合的全部键的Set集合

                遍历键的Set集合,然后通过键提取对应值

  • package boke;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class MapDome {
        public static void main(String[] args) {
            Map<String,Integer> map = new HashMap<>();
            map.put("华为",5999);
            map.put("荣耀",2999);
            map.put("小米",3999);
            map.put("苹果",7999);
            System.out.println(map);
    
            // 第一步,现获取Map集合的全部键的Set集合
            Set<String> keys = map.keySet();
    
            //遍历键的Set集合 通过键获取对应的值
            for (String key : keys) {
                int value = map.get(key);
                System.out.println(key+"---->"+value);
            }
    
        }
    }

                方式二:键值对

                        先把Map集合转换成Set集合,Set集合中每个元素都是键值对实体类型

                        遍历Set集合,然后提取键以及提取值

package boke;

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

public class MapDome2 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("华为",5999);
        map.put("荣耀",2999);
        map.put("小米",3999);
        map.put("苹果",7999);
        System.out.println(map);

        //第一步 将Map集合里面的键值对作为整体 也就是作为键值对类型 通过entrySet方法提取到Set集合中
        Set<Map.Entry<String, Integer>> entries = map.entrySet();

        //  Set<Map.Entry<String, Integer>> entries = [(华为=5999),(荣耀=2999),(小米=3999),(苹果=7999)]
        //第二步:通过foreach循环 , 遍历提取到的Set集合 , 分别提取键和值
        for (Map.Entry<String, Integer> entry : entries) {
            String key = entry.getKey();
            int value = entry.getValue();
            System.out.println(key+"---->"+value);
        }

    }
}
               方式三:lambda表达式
package boke;

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

public class MapDome3 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("华为",5999);
        map.put("荣耀",2999);
        map.put("小米",3999);
        map.put("苹果",7999);
        System.out.println(map);
        //map.forEach(new BiConsumer<String, Integer>() {
        //            @Override
        //            public void accept(String key, Integer value) {
        //                System.out.println(key+"---->"+value);
        //            }
        //        })
        
        //简化写法
        map.forEach((key, value) -> System.out.println(key+"---->"+value));
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值