当前位置: 首页 > news >正文

集合的父亲之Map------(双列集合顶级接口)和遍历方式

一、概念

1.什么是Map集合?

答:Map双列集合和collection单列集合并列为集合的父亲。Map集合也叫键值对集合。添加元素都是成对的键值对方式添加

2.使用场景?

答:Map集合大多数用在做购物车这样的业务场景

3.重点掌握与其中区别?

答:HashMap(键--无序)、LinkeHashMap(键--有序)、TreeMap(键--排序)

值不做要求

4.其他知识点

1.Map集合的键是无序、不重复的。但是值是可以重复的

2.可以为null

3.重复添加到同一个键的值,后面值会覆盖前面值

4.键值对:左边是键,右边是值。例如("巧克力",100)

二、关系图

红色:接口

蓝色:实现类

例子:

package bao;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
        //创建对象
        Map<String,Integer> maps = new HashMap<>();
        //1.添加元素
        maps.put("小狗",1);
        maps.put("小鱼",1);
        maps.put("玫瑰",99);
        System.out.println(maps);//{小狗=1, 小鱼=1, 玫瑰=99}

        //2.判断集合是否为空,为空则返回true,不为空则false
        System.out.println(maps.isEmpty());

        //3.根据键找值
        Integer key = maps.get("小狗");
        System.out.println(key);//1

        //4.根据键删除整个元素
        maps.remove("小狗");
        System.out.println(maps);//{小鱼=1, 玫瑰=99}

        //6.判断是否包含某个键
        System.out.println(maps.containsKey("小鱼"));//true

        //7.判断是否包含某个值
        System.out.println(maps.containsValue(99));//true

        //8.获取所有键
        Set<String> keys = maps.keySet();
        System.out.println(keys);

        //9.获取所有值
        Collection<Integer> values = maps.values();
        System.out.println(values);

        //10.集合的大小
        System.out.println(maps.size());

        //11.清空集合
        maps.clear();
        System.out.println(maps);//{}

        //12.合并其他Map集合。(扩展)。合并集合a和集合b
        //创建集合a
        Map<String,Integer> a = new HashMap<>();
        a.put("狙击枪",10);
        a.put("小米加步枪",60);
        //创建集合b
        Map<String,Integer> b = new HashMap<>();
        a.put("散弹枪",5);
        a.put("小米加步枪",20);
        //开始合并
        a.putAll(b);//把集合b元素拷贝到集合a里面
        System.out.println(a);//{狙击枪=10, 小米加步枪=20, 散弹枪=5}

    }
}

=================================================遍历方式​​​​​​​============================================

方式一:键找值

package bao;

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

public class Test {
    public static void main(String[] args) {
        Map<String,Integer> maps = new HashMap<>();
        //添加元素
        maps.put("加特林",1);
        maps.put("狙击枪",2);
        maps.put("步枪",3);
        //1.获取全部键
        Set<String> keys = maps.keySet();
        //2.增强for循环遍历键
        for (String key : keys) {
            //3.使用用集合的方法get得到遍历的key。可以获得值
            Integer value = maps.get(key);
            //4.输出所有的键值
            System.out.println(key+value);//狙击枪2 步枪3 加特林1
        }
    }
}

运行结果:

狙击枪2
步枪3
加特林1 

方式二:键值对

package bao;

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

public class Test {
    public static void main(String[] args) {
        Map<String,Integer> maps = new HashMap<>();
        //添加元素
        maps.put("加特林",1);
        maps.put("狙击枪",2);
        maps.put("步枪",3);
        //1.把Map集合转化为set集合..快捷方式Map.entrySet+快捷键Ctrl+Alt+v
        Set<Map.Entry<String, Integer>> entries = maps.entrySet();
        //2.for (<里面的那些复制过来>,自定义变量:entries)
        for (Map.Entry<String, Integer> a:entries){
            //3.获取键和值
            String key = a.getKey();//获取键
            Integer value = a.getValue();//获取值
            System.out.println(key+value);//狙击枪2 步枪3 加特林1
        }
    }
}

运行结果:

狙击枪2
步枪3
加特林1 

方式三:Lambda (简便优雅,但是要熟悉使用,快捷键暂时还没有发现)

package bao;
import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        Map<String,Integer> maps = new HashMap<>();
        //添加元素
        maps.put("加特林",1);
        maps.put("狙击枪",2);
        maps.put("步枪",3);
        //方式maps.forEach((自变量1,自变量2)->{输出方法体});
        maps.forEach((k,v)->{
            System.out.println(k+v);//狙击枪2 步枪3 加特林1
        });
    }
}

运行结果:

狙击枪2
步枪3
加特林1 

相关文章:

  • APS智能排产助力印染行业进行精细化管理
  • 大学公众号题库API 网课查题题库接口API接口
  • 2022年全球及中国游戏音乐行业头部企业市场占有率及排名调研报告
  • 网课 题库接口
  • Hadoop集群的启动顺序
  • openstack-mitaka(一) 架构简介
  • Opencv图像基本操作——读取、显示、截取图像、属性、颜色通道、边界填充、图像融合
  • 商业管理和经济学哪个好ib?
  • 如何做自媒体在一个月内赚到2万?
  • 广和通5G/4G/NB-IoT智慧水务一体化联网解决方案精准加码水利数智化
  • 《Mycat分布式数据库架构》之故障切换
  • 大数据营销促进消费品牌增长,消费品投资回归常识思维
  • 题库接口系统搭建
  • [漏洞分析]CVE-2021-42008 6pack协议堆溢出内核提权
  • 网课题库接口搭建步骤
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 2017前端实习生面试总结
  • 3.7、@ResponseBody 和 @RestController
  • Computed property XXX was assigned to but it has no setter
  • css布局,左右固定中间自适应实现
  • es的写入过程
  • gitlab-ci配置详解(一)
  • Javascript 原型链
  • Linux各目录及每个目录的详细介绍
  • uva 10370 Above Average
  • Yii源码解读-服务定位器(Service Locator)
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 汉诺塔算法
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 简单实现一个textarea自适应高度
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 为什么要用IPython/Jupyter?
  • 想使用 MongoDB ,你应该了解这8个方面!
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #vue3 实现前端下载excel文件模板功能
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (007)XHTML文档之标题——h1~h6
  • (26)4.7 字符函数和字符串函数
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net MySql
  • .NET/C# 的字符串暂存池
  • .net6使用Sejil可视化日志
  • .net反编译的九款神器
  • /etc/fstab 只读无法修改的解决办法
  • /etc/sudoers (root权限管理)
  • /proc/vmstat 详解
  • @ModelAttribute注解使用
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ 数据结构 - C++] AVL树原理及实现