栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2022Java学习笔记六十八(Map集合系列、Map常用的API、Map遍历集合的三种方式)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022Java学习笔记六十八(Map集合系列、Map常用的API、Map遍历集合的三种方式)

2022Java学习笔记六十八(Map集合系列、Map常用的API、Map遍历集合的三种方式)

一、Map集合概念和使用

1、Map集合是一种双列集合,每个元素包含两个数据
2、Map集合的每个元素的格式为:Key=value(键值对元素)
3、Map集合也被称为【键值对集合】

Map集合的整体格式

Collection集合的格式:[元素1,元素2,元素3]
Map集合的完整格式:{key=value1,key2=value2,key3=value3,…}

像购物车项目系统会用到
二、Map系列

使用最多的Map集合是HashMap
Map集合体系的特点

1、Map集合的特点都是由键决定的
2、Map集合的键是无序、不重复、无索引、值不做要求(可重复)的
3、Map集合后面重复的键对应的值会覆盖前面重复的键的值
4、Map集合的键值对都可以为null

Map集合实现类的特点

HashMap:元素按照键是无序、不重复、无索引、值不做要求
linkedHashMap:元素按照键是有序、不重复、无索引、值不做要求
TreeMap:元素按照键是排序、不重复、无索引、值不做要求

示例代码

package com.zcl.d3_map;

import java.util.HashMap;
import java.util.linkedHashMap;
import java.util.Map;
import java.util.TreeMap;

// 目标:认识Map体系
public class MapDemo {
    public static void main(String[] args) {
        // 1、创建一个Map集合对象
        Map maps = new HashMap<>(); // 无序、不重复、无索引
        // Map maps = new linkedHashMap<>(); // 有序、不重复、无索引 // {鸿星尔克=3, 安踏=5, 耐克=5, java=3, null=null}
        maps.put("鸿星尔克",3);
        maps.put("安踏",2);
        maps.put("耐克",5);
        maps.put("java",3);
        maps.put("安踏",5); // 覆盖前面的安踏
        maps.put(null,null);
        System.out.println(maps); // {null=null, java=3, 耐克=5, 鸿星尔克=3, 安踏=5}
    }
}

三、Map常用的API

Map是双列集合的祖宗接口,它的功能是全部双利集合都可以继承使用的


示例代码

package com.zcl.map_api;

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

public class Demo {
    public static void main(String[] args) {
        Map maps = new HashMap<>(); // 无序、不重复、无索引
        maps.put("苹果",3);
        maps.put("黎",2);
        maps.put("歪歪",6);
        maps.put("鼠标",1);
        maps.put("手机",10);
        System.out.println(maps);
        // 2、清空集合
        // maps.clear();
        // System.out.println(maps);

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

        // 4、根据键获取对应的值
        System.out.println(maps.get("黎")); // 2 没有键取值为null

        // 5、根据键删除整个元素,返回删除元素键的值
        System.out.println(maps.remove("手机")); // 10

        // 6、判断是否包含某个键,包含返回true
        System.out.println(maps.containsKey("手机")); // false 上面的代码已经删除了手机

        // 7、判断是否包含了某个值
        System.out.println(maps.containsValue(3)); // true 苹果
        System.out.println(maps.containsValue(6)); // true 歪歪

        System.out.println("-------------");
        // 8、获取全部键的集合
        Set keyS = maps.keySet();
        System.out.println(keyS); // [苹果, 鼠标, 歪歪, 黎]

        // 9、获取全部值的集合
        Collection values = maps.values();
        System.out.println(values); // [3, 1, 6, 2]
        // 10、获取集合的大小
        int size = maps.size();
        System.out.println(size); // 4
        System.out.println("--------扩展知识-----");
        // 11、合并其他的集合(拓展)
        Map map1 = new HashMap<>(); // 无序、不重复、无索引
        map1.put("java1",10);
        map1.put("java2",15);
        Map map2 = new HashMap<>(); // 无序、不重复、无索引
        map2.put("java2",100);
        map2.put("java3",50);
        // 把集合2添加到集合1中
        map1.putAll(map2);
        System.out.println(map1); // {java3=50, java2=100, java1=10}
        System.out.println(map2); // {java3=50, java2=100}
    }
}

四、Map遍历集合方式一:键找值

1、先获取Map集合的索引键的Set集合
2、遍历键的Set集合,然后通过键获取到对应的值


示例代码

package com.zcl.map_api;

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

public class Demo2 {
    public static void main(String[] args) {
        Map map1 = new HashMap<>(); // 无序、不重复、无索引
        map1.put("java1",10);
        map1.put("java2",15);
        map1.put("java3",65);
        map1.put("java4",19);
        map1.put("java5",20);
        map1.put("java6",89);
        System.out.println(map1); 
        // {java5=20, java4=19, java3=65, java2=15, java6=89, java1=10}
        
        // 获取到所有的键
        Set keySet = map1.keySet();
        // 遍历每个键
        for (String s : keySet) {
            System.out.println("key:"+s);
            
        }
        
    }
}

五、Map遍历集合方式二:键找对

1、先把Map集合转换成Set集合,Set集合中每个元素都是键值对实体类型了
2、遍历Set集合,然后提取键以及值

示例代码

package com.zcl.map_api;

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

public class Demo3 {
    public static void main(String[] args) {
        Map map1 = new HashMap<>(); // 无序、不重复、无索引
        map1.put("java1",10);
        map1.put("java2",15);
        map1.put("java3",65);
        map1.put("java4",19);
        map1.put("java5",20);
        map1.put("java6",89);
        System.out.println(map1); // {java5=20, java4=19, java3=65, java2=15, java6=89, java1=10}
        // 键map集合转换成set集合
        Set> entries = map1.entrySet();
        // 遍历set集合
        for (Map.Entry entry : entries) {
            String key = entry.getKey(); // 取键
            Integer value = entry.getValue(); // 取值
            System.out.println(key+"----->"+value);
        }

    }
}

六、Map遍历集合方式三:lambda表达式

示例代码

package com.zcl.map_api;

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

public class Demo4 {
    public static void main(String[] args) {
        Map map1 = new HashMap<>(); // 无序、不重复、无索引
        map1.put("java1",10);
        map1.put("java2",15);
        map1.put("java3",65);
        map1.put("java4",19);
        map1.put("java5",20);
        map1.put("java6",89);
        System.out.println(map1); // {java5=20, java4=19, java3=65, java2=15, java6=89, java1=10}

        

        // 简化格式
        map1.forEach((key, val) -> System.out.println(key+"---->"+val));

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749004.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号