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

JavaSE22-集合2-map

文章目录

  • 一、集合概念
  • 二、map集合
    • 1、Map集合的特点
    • 2、HashMap
      • 2.1 HashMap特点
      • 2.2 创建对象
      • 2.3 常用方法
      • 2.4 遍历
        • 2.4.1 使用entrySet遍历
        • 2.4.2 使用keySet遍历
    • 3、HashMap的key去重原理

一、集合概念

  1. 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说,集合的长度可变会更加灵活方便。
  2. 集合主要有两个顶层接口,Collection和Map。
    在这里插入图片描述

二、map集合

1、Map集合的特点

Map接口是双列集合的顶层接口,下面是Map接口的定义

interface Map<K,V>  K:键的类型;V:值的类型
  1. 存储的数据必须包含key和value。
  2. key和value在Map集合中是一一对应的关系。一个key对应一个value。
  3. key在map集合中是不会重复的。

2、HashMap

2.1 HashMap特点

  1. 底层数据结构是哈希表
  2. 存储元素的顺序和遍历获取出来的顺序可能不一致
  3. key不会重复

2.2 创建对象

HashMap<key的数据类型,value的数据类型> map = new HashMap<>();

    public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();HashMap<String,Integer> map = new HashMap<>();}

2.3 常用方法

  1. V put(K key, V value) //添加元素,如果key不存在就添加,如果key已经存在则是修改对应的value,并且返回修改前的value
  2. V get(Object key) //根据key获取对应的value值返回。如果key不存在就返回null
  3. V remove(Object key) //根据key删除map中对应的键值对。并且把删除的value返回
  4. boolean containsKey(Object key) //判断key是否存在
  5. int size() //集合中键值对的对数
  6. void clear() //清空集合中的所有键值对
  public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();//map.put()//添加元素map.put("name", "三更");map.put("age", "15");String v = map.put("name", "三更草堂");String name = map.get("name");String age = map.get("age");//删除元素String delV = map.remove("age");//判断key是否存在if(map.containsKey("name")){String age111 = map.get("name");//nullSystem.out.println(age111.length());}//sizeint size = map.size();map.clear();}

2.4 遍历

2.4.1 使用entrySet遍历

map集合的entrySet方法可以获取一个Set集合,集合中存放的是Entry对象,一个Entry对象相当于一个键值对。我们可以遍历set集合拿到Entry对象,然后获取出里面的键和值。

    public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("name","三更");map.put("age","15");Set<Map.Entry<String, String>> entries = map.entrySet();//使用迭代器遍历entrySetIterator<Map.Entry<String, String>> it = entries.iterator();while (it.hasNext()){Map.Entry<String, String> entry = it.next();System.out.println(entry.getKey()+"===="+entry.getValue());}}
    public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("name","三更");map.put("age","15");Set<Map.Entry<String, String>> entries = map.entrySet();//使用foreach遍历entrySetfor (Map.Entry<String, String> entry : entries) {System.out.println(entry.getKey()+"===="+entry.getValue());}}

2.4.2 使用keySet遍历

map集合的keySet方法可以获取一个Set集合,集合中存放的是所有的key。我们可以遍历set集合拿到key对象,然后通过key获取对应的value。

    public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("name","三更");map.put("age","15");Set<String> keys = map.keySet();for (String key : keys) {System.out.println(key+"===="+map.get(key));}}

3、HashMap的key去重原理

  1. HashMap在添加元素的时候会判断集合中是否有key和本次存入的key相同。判断的时候主要是通过hashCode方法和equals方法来进行判断的。hashCode相同,并且equals判断也相同就会认为是同一个key。
  2. Alt + insert 重写hashCode方法和equals方法
    在这里插入图片描述

注意:HashSet存储数据其实也是使用了HashMap。所以如果往HashSet中存储自定义对象也要看情况是否需要重写hashCode方法和equals方法。

http://www.lryc.cn/news/26108.html

相关文章:

  • 【项目精选】病历管理系统设计与实现(源码+视频)
  • 如何用Python把篮球和鸡联系起来
  • 【RocketMQ】消息的刷盘机制
  • AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed
  • Java知识复习(八)Spring基础
  • WuThreat身份安全云-TVD每日漏洞情报-2023-02-27
  • 上海交大陈海波教授、夏虞斌教授领衔巨作上市:《操作系统:原理与实现》
  • dpi数据接入shell脚
  • Easyrecovery数据恢复软件工作原理及使用介绍教程
  • 【面试题】社招中级前端笔试面试题总结
  • 设备运行状况不能远程手机查看。难道就妥协吗?为何不试试这个办法
  • 重新认识 Java 中的内存映射(mmap)
  • 224. 基本计算器
  • 微信小程序通过 node 连接 mysql——方法,简要原理,及一些常见问题
  • uni-app项目搭建和代码托管
  • win10+python3.6+cuda9+pytorch1.1.0安装
  • 【2023】某python语言程序设计跟学第二周内容
  • spring源码篇——BeanDefinition的注册
  • virtualbox7虚拟机中安装苹果macOS big sur系统详细教程
  • 用spectralayers 简单去一下人声做个伴奏
  • 高峰对话|深度探讨「多云与边缘」
  • 开发手册——一、编程规约_2.常量定义
  • Sandstorm 建设者亮点——2023 年 2 月
  • MyBatis快速入门
  • Mysql的一些提权方式(mysql提权、UDF)
  • 【2023】DevOps、SRE、运维开发面试宝典之Docker相关面试题
  • 圣杯布局的实现方式
  • RecastDemo用法
  • IIC总线式驱动开发(mpu6050)(二)
  • 盘点一下那些远程办公的神仙公司