一、概述

Map集合是一种双列集合。由两部分组成。

键和值。称为键值对。

Map集合分为:

示例:

//1.创建一个Map集合对象
Map <String , Integer> maps = new HashMap<>();//一行经典代码
maps.put("鸿星尔克",3);
maps.put("Java",1);
maps.put("枸杞",100);
maps.put("Java",100);//覆盖前面的数据
maps.put(null,null);
System.out.println(maps);

Map集合特点

二、常用API

1、先创建集合,添加元素

        Map<String , Integer> maps = new HashMap<>();maps.put("iPhoneX",10);maps.put("娃娃",31);maps.put("iPhoneX",100);//Map集合后面重复的键对应的元素会覆盖前面重复的整个元素maps.put("HUAWEI",1000);maps.put("生活用品",10);maps.put("手表",10);

2、清空集合4、根据键获取对应值:public V get(Object key)

map.clear(maps);

3、判断集合是否为空,为空就返回true,反之false

System.out.println(maps.isEmpty());

4、根据键获取对应值:public V get(Object key)

        Integer key = maps.get("HUAWEI");System.out.println(key);//1000System.out.println(maps.get("生活用品"));//10System.out.println(maps.get("生活用品2"));//null

5.根据键删除整个元素(删除键会返回键的值)

        System.out.println(maps.remove("iPhoneX"));System.out.println(maps);

6.判断是否包含某个键,包含返回true,反之!

        Set<String> keys = maps.keySet();System.out.println(keys);
        System.out.println(maps.containsKey("娃娃"));//trueSystem.out.println(maps.containsKey("娃娃2"));//falseSystem.out.println(maps.containsKey("iPhone X2"));//false

7、判断是否包含某个值

        System.out.println(maps.containsValue(100));System.out.println(maps.containsValue(10));System.out.println(maps.containsValue(22));

8.获取全部键的集合:public Set<K> keySet()

        Set<String> keys = maps.keySet();System.out.println(keys);

9.获取全部值的集合:Collection<V> values()

这时我们使用Collection来接数据,是因为值是可以重复的,不能用Set(去重复)

        Collection<Integer> values = maps.values();//使用Collection来接数据,是因为值是可以重复的,不能用Set(去重复)System.out.println(values);

10、集合的大小

        System.out.println(maps.size());//4

11.合并其他Map集合(拓展)

        Map<String , Integer> map1 = new HashMap<>();map1.put("java",1);map1.put("java2",100);Map<String , Integer> map2 = new HashMap<>();map2.put("java2",1);map2.put("java3",100);map1.putAll(map2);//把集合map2 的元素拷贝一份到map1 中去System.out.println(map1);System.out.println(map2);

12、一些方便的快捷键

//map1.entrySet();     ctrl + alt + V键
// Set<Map.Entry<String, Integer>> entries = map1.entrySet();//map1.keySet();        alt + 回车
// Set<String> keys = map1.keySet();

三、三种特有的遍历方式

首先:我们要创建一个集合

Map<String , Integer> maps = new HashMap<>();
maps.put("娃娃",31);
maps.put("iPhoneX",100);//Map集合后面重复的键对应的元素会覆盖前面重复的整个元素
maps.put("HUAWEI",1000);
maps.put("生活用品",10);
maps.put("手表",10);
System.out.println(maps);

第一种遍历方法(键找值):

第一步:先拿到集合的全部键

第二步:遍历每个键,根据键提取值

        Set<String> keys = maps.keySet();for (String key : keys) {int value = maps.get(key);System.out.println(key + "===>" +value);}

第二种遍历方法:

(键值对)把Map集合转换成Set集合,在用foreach遍历

        Set<Map.Entry<String , Integer>> entries = maps.entrySet();//开始遍历for(Map.Entry<String , Integer> entry : entries){String key = entry.getKey();int value = entry.getValue();System.out.println(key + "===>" +value);}

第三种遍历方法:

Lambda表达式,简化代码

简化前

maps.forEach(new BiConsumer<String, Integer>() {@Overridepublic void accept(String k, Integer v) {System.out.println(k + "--->" + v);}
});

简化后:

 maps.forEach((k,v)->  System.out.println(k + "===>" + v));

四、应用,案例

案例:统计投票人数

1.把8 个学生选择的数据拿过来

        String[] selects = {"A","B","C","D"};StringBuilder sb = new StringBuilder();Random r = new Random();for (int i = 0; i < 80; i++) {sb.append(selects[r.nextInt(selects.length)]);}System.out.println(sb);

2.定义一个Map集合的记录最终统计的结果:A=30,B=20,C=20,D=10

        Map<Character , Integer> infos = new HashMap<>();

3.遍历80个学生选择的数据

之后再进行判断

        for (int i = 0; i < sb.length(); i++) {//4.提取M当前选择景点字符char ch = sb.charAt(i);//5.判断Map集合中是否存在这个键if(infos.containsKey(ch)){//让其值 +1infos.put(ch,infos.get(ch)+1);}else{//说明此景点是第一次被选infos.put(ch,1);}}

4.总体代码演示:

String[] selects = {"A","B","C","D"};StringBuilder sb = new StringBuilder();Random r = new Random();for (int i = 0; i < 80; i++) {sb.append(selects[r.nextInt(selects.length)]);}System.out.println(sb);Map<Character , Integer> infos = new HashMap<>();for (int i = 0; i < sb.length(); i++) {//4.提取M当前选择景点字符char ch = sb.charAt(i);//5.判断Map集合中是否存在这个键if(infos.containsKey(ch)){//让其值 +1infos.put(ch,infos.get(ch)+1);}else{//说明此景点是第一次被选infos.put(ch,1);}}

Map集合的概述与特点,常用API及特有的三种遍历方式总结,带应用相关推荐

  1. java中map的遍历方法_Java中Map的三种遍历方式

    集合中的三种遍历方式,如下代码: import java.util.Collection; import java.util.HashMap; import java.util.Iterator; i ...

  2. Java中List集合的三种遍历方式(全网最详)

    Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...

  3. Java基础知识 21(Set集合,HashSet集合以及它的三种遍历方式(迭代器,增强for循环,forEach),LinkedHashSet集合,TreeSet集合(自然排序法,比较器排序法))

    Java基础知识 21 Set集合 Set集合:一个不包含重复元素的Collection集合,元素不重复,List集合是允许元素重复的. Set接口的三个字类:HashSet(),LinkedHash ...

  4. Java中Map集合的三种遍历方式

    文章目录 Map集合的遍历方式 Map集合的遍历方式一: 键找值 Map集合的遍历方式二: 键值对 Map集合的遍历方式三: Lambda Map集合的遍历方式 Map集合的遍历方式有3种: 方式一: ...

  5. Java Collection集合的三种遍历方式

    文章目录 Collection遍历方式 迭代器遍历 foreach遍历 Lambda遍历 Collection遍历方式 Collection集合遍历的方式有三种: 迭代器 foreach/增强for循 ...

  6. java集合 HashMap的三种遍历方式

    前言: HashMap的集合中的比重是无可厚非的,由自身的数组+链表/红黑树构成的(JDK 1.8),这样使得HashMap优点表现出来: 数组查询效率快: 链表的插入和删除效率也加快 但是HashM ...

  7. java集合之——List的三种遍历方式

    一.使用 iterator(迭代器)遍历 1) java iterrator用于遍历集合,本身并不存放对象. 2)迭代器iterator的基本操作: iterator.hasNext():判断集合中是 ...

  8. Java中Map的三种遍历方式:keySet、 entrySet、forEach

    前言 最近在看<阿里巴巴Java开发手册(华山版)>,看到了关于Map的遍历方式,手册上写的很详细,我这里用代码再来展示一遍. 代码 public static void main(Str ...

  9. java中map的三种遍历方式,return的时机,佛祖打印

    Map<String, Object> map = new HashMap<>();map.put("id","dad");map.pu ...

最新文章

  1. OPENGFILER存储柜
  2. ​causal-learn:基于Python的因果发现算法平台
  3. jieba(结巴)常用方法
  4. Hadoop与Alpach Spark的区别
  5. 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了...
  6. 面向对象第七章,内存的管理,面向对象三大特征封装、继承、多态
  7. 实战SQL Server 2005镜像配置全过程
  8. 我的mongoose代码备份
  9. asp.net网页中导出EXCEL,WORD的环境设置验证实例
  10. C++之指针探究(三):指针数组和数组指针
  11. APP扫码登录WEB系统
  12. 2022年国产操作系统发展现状
  13. jQuery 已经落幕了~
  14. 华为 eNSP 打开警告:请将eNSP相关应用程序添加到windows firewall的允许程序列表,并允许其在公用网络上运行!
  15. centos环境更换IP地址为静态并且正常联网
  16. 工业设计软件主要代表
  17. 目前最受欢迎的12个Python开源框架,你用过几个?
  18. 通过思维导图学习知识的两种模板鉴赏
  19. Android:展锐battery
  20. 自然数e这家伙怎么蹦跶出来的?

热门文章

  1. 带你了解区块链的三种类型
  2. 安装DELL R430服务器的过程记录
  3. java计算机毕业设计志愿者服务平台源码+数据库+系统+lw文档
  4. 储粮害虫图片CNN识别
  5. 工业相机的分辨率是如何定义的?
  6. 触摸键盘驱动(STM32,TTP229-B)
  7. mysql的merge_mysql用merge合并表
  8. CopyMemory memcpy产生的后果
  9. 2021-06-19首饰宝石珠宝秤方案开发
  10. 常识-ctrl c和ctrl v不能使用