第1关:学习-Java集合类之Map的HashMap之常用方法的使用


任务描述

本关任务:使用 HashMap 集合操作菜单。

相关知识

什么是 HashMap

HashMap 是 Map 接口的实现类,它存储的内容是键值对(key-value)映射,其中 key、value 都可以为 null。HashMap 是无序的,即被存入到 HashMap 中的元素,在遍历 HashMap 时,其输出是无序的。

创建 HashMap 集合

使用以下代码即可创建一个 HashMap 集合。

public static void main(String[] args) {
   // 创建 HashMap 集合,key 存储字符串类型,value 存储整数类型
   Map<String, Integer> hashMap = new HashMap<>();
    }

HashMap 集合常用方法

下表展示了 HashMap 集合的常用方法:

方法名方法说明
put()方法往集合中添加元素,key 值不可重复,重复时会覆盖之前的 value 值
size()方法返回集合长度
get(key)方法获取对应 key 值的 value 值
clear()方法清除集合中的所有元素
values()方法返回一个新集合,获取集合中所有元素的 values
keySet()方法返回一个新集合,获取集合中所有元素的 key
remove()方法根据 key 或者 key-value 去除集合中元素,并分别返回 value 值和 Boolean 值
iterator()方法返回一个迭代器对象
entrySet()方法将 Map 集合每个 key-value 转换为一个 Entry 对象,并返回由所有的 Entry 对象组成的 Set 集合
containsKey()判断集合中是否含右指定的 key 值

常用方法示例:

 public static void main(String[] args) {
        // 创建 HashMap 集合,key存储字符串类型,value存储整数类型
        Map<String, Integer> hashMap = new HashMap<>();
        // 添加元素
        hashMap.put("李四",28);
        hashMap.put("张三",26);
        hashMap.put("王五",26);
        // 根据 key 获取 value 值
        Integer zs = hashMap.get("张三");
        System.out.println(zs);
        // 获取所有 key 值
        Set<String> strings = hashMap.keySet();
        System.out.println(strings);
        // 获取所有 value 值
        Collection<Integer> values = hashMap.values();
        System.out.println(values);
        // 根据 key 去除元素
        Integer ww = hashMap.remove("王五");
        System.out.println(ww);
        // 根据 key-value 去除元素
        boolean boole = hashMap.remove("李四", 28);
        System.out.println(boole);     
        System.out.print(hashMap);
    }

执行结果:

  1. 26
  2. [李四, 张三, 王五]
  3. [28, 26, 26]
  4. 26
  5. true
  6. {张三=26}

遍历 HashMap 集合

以下是三种常用遍历方法。

public static void main(String[] args) {
        // 创建 HashMap 集合,key 存储字符串类型,value 存储整数类型
        Map<String, Integer> map = new HashMap<>();
        // 添加元素
        map.put("李四",28);
        map.put("张三",26);
        map.put("王五",26);
        //第一种:通过 keySet 遍历,普遍使用
        for (String key : map.keySet()) {
            System.out.println("key= "+ key + " and value= " + map.get(key));
             System.out.println(----------);
        }
        //第二种:通过 entrySet 和迭代器遍历
        Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, Integer> entry = it.next();
            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
            System.out.println(----------);
        }
        //第三种:通过 entrySet 和增强 for 循环遍历,推荐,尤其是容量大时
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
            System.out.println(----------);
        }
        }

执行结果:

 
  1. key= 李四 and value= 28
  2. key= 张三 and value= 26
  3. key= 王五 and value= 26
  4. ----------
  5. key= 李四 and value= 28
  6. key= 张三 and value= 26
  7. key= 王五 and value= 26
  8. ----------
  9. key= 李四 and value= 28
  10. key= 张三 and value= 26
  11. key= 王五 and value= 26

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,使用 HashMap 集合的常用方法完成所给要求,具体如下:

  • 接收给定的一行字符串(如:红烧鱼:50,小炒牛肉:75,...);
  • 切割字符串,把切割后的元素添加进 HashMap 集合中;
  • 往集合中添加一道菜,菜名:lamb,价格:50;
  • 输出所有菜名(不含价格);
  • 删除红烧鱼和小炒牛肉这两道菜后输出集合长度;
  • 打印集合。

注意:字符串中的逗号和分号都是中文符号。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

 
  1. 粉蒸肉:50,红烧鱼:50,小炒牛肉:75,手撕包菜:20,蒜蓉虾:100

预期输出:

 
  1. [手撕包菜, 蒜蓉虾, lamb, 小炒牛肉, 粉蒸肉, 红烧鱼]
  2. 4
  3. {手撕包菜=20, 蒜蓉虾=100, lamb=50, 粉蒸肉=50}

开始你的任务吧,祝你成功!

/*
仔细阅读给出的代码框架及注释,在 Begin-End 间编写程序代码,使用 HashMap 集合的常用方法完成所给要求,具体如下:
- 接收给定的一行字符串(如:红烧鱼:50,小炒牛肉:75,...);
- 切割字符串,把切割后的元素添加进 HashMap 集合中;
- 往集合中添加一道菜,菜名:lamb,价格:50;
- 输出所有菜名(不含价格);
- 删除红烧鱼和小炒牛肉这两道菜后输出集合长度;
- 打印集合。
注意:字符串中的逗号和分号都是中文符号。
*/
 
import java.util.*;
 
public class CollTest {
    public static void main(String[] args) {
        // 请在Begin-End间编写代码
        /********** Begin **********/
        // 第一步:接收给定字符串
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        // 第二步:切割字符串
        String[] str = line.split(",");
        // 第三步:创建 HashMap 集合,key为菜名,value为价格
        Map<String, String> n = new HashMap<>();
        // 第四步:添加数据到集合中
        for(String s : str) {
        	String[] str1 = s.split(":");
        	n.put(str1[0], str1[1]);
        }
        // 第五步:往集合中添加给定的一道菜
        n.put("lamb", "50");
        // 第六步:输出所有菜名
        System.out.println(n.keySet());
        // 第七步:删除红烧鱼和小炒牛肉这两道菜后输出集合长度
        n.remove("红烧鱼");
        n.remove("小炒牛肉");
        System.out.println(n.size());
        // 第八步:打印集合
        System.out.println(n);
        /********** End **********/
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君临๑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值