Java基础——Map集合


Posted in Java/Android onApril 01, 2022

一、概述:

  1. Interface Map<K,V> k:键的类型;V:值的类型

  2. 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值

二、创建Map集合的对象方式

1.使用多态的方式

2.具体实现类HashMap

public static void main(String[] args) {
        //创建Map集合对象
        Map<String,String> m=new HashMap<String,String>();
        //添加元素使用put方法,默认自然排序
        m.put("02","李四");
        m.put("04","赵六");
        m.put("01","张三");
        m.put("03","王五");
        System.out.println(m);
    }
}

三、Map集合的常用方法

方法名 说明
V put(K key,V value) 添加元素,添加重复键值元素会覆盖
V remove(Object key) 根据键删除键值对元素
void clear() 清除所有的键值对元素
Boolean containsKey(Object key) 判断集合是否包含指定的键,包含返回true
Boolean containsValue(Object value) 判断集合是否包含指定的值,包含返回true
Boolean isEmpty() 判断集合是否为空
int size() 获取集合的长度,也就是键值对的个数
public class MapDemo01 {
    public static void main(String[] args) {
        //创建Map集合对象
        Map<String,String> m=new HashMap<String,String>();
        //添加元素,put方法
        m.put("1","张三");
        m.put("2","李四");
        m.put("3","王五");
        m.put("4","赵六");
        // System.out.println(m);
        //根据键删除键值对元素
        System.out.println(m.remove("3"));//切记键是什么类型就写什么类型,不然会返回null
        System.out.println(m);
        //清除所有键值对元素
        m.clear();
        //Boolean isEmpty()判断集合是否为空
        System.out.println(m.isEmpty());
       // System.out.println(m);
        //Boolean containsKey(Object key);判断集合中是否包含指定的键
        System.out.println(m.containsKey("5"));//切记键是什么类型就写什么类型,不然会返回null
        //Boolean containsValue(Object value)判断集合是否包含指定的值,包含返回true
        System.out.println(m.containsValue("张三"));
        //int size()获取集合的长度,也就是键值对的个数
        System.out.println(m.size());
    }
}

四、Map的获取方法

方法名 说明
V get(Object key) 根据键获取值
Set<K>keySet() 获取所有键的集合
Collection<V>values() 获取所有值的集合
Set<Map.Entry<K,V>>entrySet() 获取所有键值对对象的集合
public class MapDemo02 {
    public static void main(String[] args) {
        //创建Map对象
        Map<String,String> m=new HashMap<String,String>();
        //添加元素
        m.put("1","张三");
        m.put("3","李四");
        m.put("4","王五");
        m.put("2","赵六");
//        System.out.println(m);
        //V get(Object key)根据键获取值
        System.out.println(m.get("3"));//要注意键的类型,类型不对会报null
        //Set<K>keySet()获取所有键的集合,因为返回的是个集合,所以用增强for遍历
        Set<String> k=m.keySet();
        for (String key:k){
            System.out.println(key);
        }
        //Collection<V>values()获取所有值的集合,注意,他会按照键的排序对值进行排序
        Collection<String> c=m.values();
        for (String v:c){
            System.out.println(v);
        }
​
    }
}

五、Map集合的遍历方式

方式一:

1.先获取Map集合中的所有键的集合,使用方法setKey()

2.遍历所有键的集合获取每一个键

3.通过每一个键获取相对应的值 getValues方法

public static void main(String[] args) {
        //方式一
        //创建Map集合对象
        Map<String,String> m=new HashMap<String,String>();
        //添加键值对
        m.put("1","张三");
        m.put("3","李四");
        m.put("4","王五");
        m.put("2","赵六");
        //获取所有键的集合
        Set<String>s=m.keySet();
        //遍历
        for (String key:s){
            //再通过键获取相对应的值
            String value=m.get(key);
            System.out.println(key+","+value);
        }
    }
}

方式二、

1.获取所有键值对的集合,使用Set<Map.Entry<K,V>>entrySet()方法

2.遍历这个集合获得每一个键值对 对象也就是Map.Entry对象

3.再根据键值对对象获取值和键

getKey()获取键

getValue()获取值

public static void main(String[] args) {
//        //方式一
//        //创建Map集合对象
//        Map<String,String> m=new HashMap<String,String>();
//        //添加键值对
//        m.put("1","张三");
//        m.put("3","李四");
//        m.put("4","王五");
//        m.put("2","赵六");
//        //获取所有键的集合
//        Set<String>s=m.keySet();
//        //遍历
//        for (String key:s){
//            //再通过键获取相对应的值
//            String value=m.get(key);
//            System.out.println(key+","+value);
//        }
        //方式二
        //创建Map集合对象
        Map<String,String> m=new HashMap<String,String>();
        //添加键值对
        m.put("1","张三");
        m.put("3","李四");
        m.put("4","王五");
        m.put("2","赵六");
        //获取所有键值对的集合Set<Map.Entry<K,V>>entrySet()
        Set<Map.Entry<String,String>> s= m.entrySet();
        //遍历该集合
        for (Map.Entry<String,String> ss:s){
            //通过键值对对象获取键值
            String key=ss.getKey();
            //通过键值对对象获取值
            String value=ss.getValue();
            System.out.println(key+","+value);
​
        }
    }
}

 

Java/Android 相关文章推荐
mybatis 解决从列名到属性名的自动映射失败问题
Jun 30 Java/Android
Java中try catch处理异常示例
Dec 06 Java/Android
Java如何实现通过键盘输入一个数组
Feb 15 Java/Android
解决persistence.xml配置文件修改存放路径的问题
Feb 24 Java/Android
SpringBoot+Redis实现布隆过滤器的示例代码
Mar 17 Java/Android
Java 常见的限流算法详细分析并实现
Apr 07 Java/Android
Java 数组的使用
May 11 Java/Android
Android Gradle 插件自定义Plugin实现注意事项
Jun 16 Java/Android
SpringBoot使用AOP实现统计全局接口访问次数详解
Jun 16 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 Java/Android
向Spring IOC 容器动态注册bean实现方式
Jul 15 Java/Android
Java实现贪吃蛇游戏的示例代码
Sep 23 Java/Android
Android基于Fresco实现圆角和圆形图片
Apr 01 #Java/Android
Android自定义scrollview实现回弹效果
Apr 01 #Java/Android
Android自定义ScrollView实现阻尼回弹
Java实战之课程信息管理系统的实现
Android超详细讲解组件ScrollView的使用
Spring Boot DevTools 全局配置学习指南
Spring事务管理下synchronized锁失效问题的解决方法
Mar 31 #Java/Android
You might like
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
js常用函数 不错
2006/09/08 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
利用React-router+Webpack快速构建react程序
2016/10/27 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
python简单线程和协程学习心得(分享)
2017/06/14 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
详解python破解zip文件密码的方法
2020/01/13 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
怎样写离婚协议书
2014/09/10 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
股东协议书范本2016
2016/03/21 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS