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 相关文章推荐
浅析NIO系列之TCP
Jun 15 Java/Android
新手入门Jvm-- JVM对象创建与内存分配机制
Jun 18 Java/Android
探讨Java中的深浅拷贝问题
Jun 26 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
SpringCloud之@FeignClient()注解的使用方式
Sep 25 Java/Android
Java实现房屋出租系统详解
Oct 05 Java/Android
JavaCV实现照片马赛克效果
Jan 22 Java/Android
Java 关于String字符串原理上的问题
Apr 07 Java/Android
Java 写一个简单的图书管理系统
Apr 26 Java/Android
Android Studio 计算器开发
May 20 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
Android移动应用开发指南之六种布局详解
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
通过文字传递创建的图形按钮
2006/10/09 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
python进行文件对比的方法
2018/12/24 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
String这个类型的class为何定义成final?
2012/11/13 面试题
人力管理专业毕业生求职信
2014/02/27 职场文书
感恩教育月活动总结
2014/07/07 职场文书
小学教研工作总结2015
2015/05/13 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
八年级数学教学反思
2016/02/17 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫