java零基础入门-map(上)

举报
喵手 发表于 2024/11/29 01:24:36 2024/11/29
【摘要】 ​一、教学目标掌握何为map能够说出map集合的特点。能够使用map集合添加元素、删除元素等伴生方法。二、正文1、概述       说起map,想必大家并不陌生吧。之前我在讲Collection集合的时候,我是给大家提过一嘴,我说Collection集合被称为单列集合,而Map中的集合被称为双列集合。        这么描述,大家可能也比较懵,没关系,我给大家画个示意图,你们就能明白了。它两...

一、教学目标

  • 掌握何为map
  • 能够说出map集合的特点。
  • 能够使用map集合添加元素、删除元素等伴生方法。

二、正文

1、概述

       说起map,想必大家并不陌生吧。之前我在讲Collection集合的时候,我是给大家提过一嘴,我说Collection集合被称为单列集合,而Map中的集合被称为双列集合。

        这么描述,大家可能也比较懵,没关系,我给大家画个示意图,你们就能明白了。它两对于存放元素的数据形式是有所不同的,如下图。

         如上示意图,想必大家就能理解了吧。map为何被称为双列集合,其原因就是它存储元素的特点是键值对形式。

2、map集合特点

        所以接下来,要给大家总结一下,map究竟有哪些特点呢?我就简单用几个关键字给大家概要描述一下,也方便大家记忆。其包位于:java.util.Map。

  1. 集合元素无序
  2. 无索引
  3. 元素唯一(键唯一,值可重复)
  4. 双列

3、map接口常用子类

       通过查看map接口源码,map拥有多个子类。这里呢,我们主要是具体讲解HashMap与LinkedHashMap。但是作为map的其他的子类,我们还是要了解的哈。

  • HashMap:实现类。采用哈希表结构存放数据,元素存取顺序不一致。
  • LinkedHashMap:实现类。HashMap的子类,存放数据采用的是哈希表结构加链表结构。通过链表结构可以保证元素的存取顺序一致。通过哈希表可以保证键唯一,且需要重写键的hashCode()方法、equals()方法。
  • TreeMap:实现类。
  • HashTable:实现类。(面试容易被问到)

提示:对应Map接口(public interface Map<K,V>),带有两个泛型变量,在使用时,需要指明该泛型变量的数据类型,k,v数据类型可以一样, 也可以不同,根据具体需求而定。

4、map集合常用方法

        如下我给大家诺列一些map常用的伴生方法,你们是需要知道并且熟练使用的,在日后实际开发过程中,这些都是会经常用到的,然后还有些其他的方法你们就以了解为主。

  • V put(K key, V value); 

作用:通过把指定的键与指定的值添加到的Map集合中或者更新值。这方法其实你可以理解成既是添加也是修改。若map集合中存在该键,那么该方法就是进行值的修改且返回被修改前的值,若不存在该键,那就是添加,且返回值就为null。注意:键是无法修改的,值可以。

  • V get(Object key) ;

作用:通过指定的键对map集合中获取所对应的值。

  • V remove(Object key);

作用:通过指定的键来删除在map集合中的键值对,且返回值为被删除元素的值。

  • void clear();

作用:清除map集合中的所有元素。

  • boolean containsKey(Object key);

作用:判断是否包含指定的键的元素。

  • boolean containsValue(Object value);

作用:判断是否包含指定的值的元素。

  • int size()

作用:获取集合容器的长度。


三、实例演示

       如下我就来实战演练来实现教学目标的第三点跟第四点,这个你们就跟着我来敲就好了呀。如下我会带着你们手把手教学,带着大家如何使用map进行添加、删除元素。

       通过说使用map进行添加元素、删除元素。你们对map应该不再陌生了吧,会用到它伴生方法的那些啊?考考大家。

V put(K key, V value)
V remove(Object key)

        如上方法,你们具体知道如何使用么?我猜啊,小伙伴肯定一眼看到就明白。

1、put()方法

我们先来讲第一个:put()方法。其作用是把指定的键与指定的值添加到一个Map集合中或者更新对于键的值。

代码演示:

    @Test
    public void testMapPut() {

        //创建一个map集合容器
        Map<String, String> map = new HashMap<>();

        //输出打印
        System.out.println(map);

        //添加元素
        String str1 = map.put("黄忠", "法师");
        System.out.println(str1);  //null

        String str2 = map.put("吕布", "战士");
        System.out.println(str2);  //null

        String str3 = map.put("黄忠", "射手");
        System.out.println(str3);  //"法师"

        //发现没有,"黄忠"键已存在了,但是str3返回的是法师?这说明什么?

        //输出打印
        System.out.println(map);
    }

控制台输出截图:

         如上演示,证明了以下两点结论。

  1. put方法新增,返回值为null
  2. put方法修改,返回值为修改前的键旧值。

2、remove()方法

        接下来我就来给大家演示一下remove()方法。

代码演示:

    @Test
    public void testMapRemove() {

        //创建一个map集合容器
        Map<String, String> map = new HashMap<>();

        //添加元素
        map.put("黄忠", "法师");
        map.put("吕布", "战士");
        System.out.println("执行remove方法前:"+map);

        map.remove("黄忠");
        System.out.println("执行remove方法后:"+map);
    }

控制台输出打印:

执行remove方法前:{吕布=战士, 黄忠=法师}
执行remove方法后:{吕布=战士}

3、size()方法

代码演示:

    @Test
    public void testMapSize() {

        //创建一个map集合容器
        Map<String, String> map = new HashMap<>();

        //添加元素
        map.put("黄忠", "法师");
        map.put("吕布", "战士");


        System.out.println("map集合容器长度为:"+map.size());
    }

控制台输出打印:

map集合容器长度为:2

4、clear()方法

代码演示:

    @Test
    public void testMapClear() {

        //创建一个map集合容器
        Map<String, String> map = new HashMap<>();

        //添加元素
        map.put("黄忠", "法师");
        map.put("吕布", "战士");
        System.out.println("执行clear方法前:"+map);

        map.clear();
        System.out.println("执行clear方法后:"+map);
    }

控制台输出打印:

执行clear方法前:{吕布=战士, 黄忠=法师}
执行clear方法后:{}

5、containsKey()方法

6、containsValue()方法

... ...

        以上补充的这两及其他的常用方法,我这里就不给大家一一演示啦,这些就作为课后作业给大家布置了哦,希望大家都能自觉完成,勤加练习。

       好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。