Java基础课 | 开房门(哈希表:Map形式)

本文介绍了Java中的Map接口及其常见实现类HashMap,详细讲解了如何创建、添加、删除、查找和遍历键值对,以及如何在实际问题中使用HashMap来判断钥匙是否能打开特定房门。
摘要由CSDN通过智能技术生成

Java基础


map(映射)

概念和特点

map:将一个元素(key键)与一个相对应的值(value)关联起来。键和值一一对应,在map中键是唯一的,也有一个唯一的与之对应的值。

HashMap的常用方法

Java中,Map是一种接口,主要用于存储和管理键值对数据,使用它可以方便的进行查找操作。常见的实现类包括HashMap(最常用的实现类)、TreeMapLinkedHashMap等。

import java.util.Map; //引入Map接口
import java.util.HashMap; //引入HashMap实现类

//创建一个HashMap实例,用于表示学生分数
Map<String, Integer> studentScores = new HashMap<>();

基本操作:创建、添加、删除、查找等

map结构的常见方法:

  • put(key, value):将指定的键和值添加到map中,如果键已存在,则替换对应的值。
  • get(key):根据key获取对应的值value。
  • remove(key):根据key移除对应的键值对。
  • containsKey(key):检查map中是否包含key键。
  • containsValue(value):检查map中是否包含value值。
  • keySet():返回包含所有键的集合。
  • values():返回包含所有值的集合。
  • entrySet():返回包含所有键值对的集合。
// 创建一个HashMap实例
Map<String, Integer> studentScores = new HashMap<>();

// 添加键值对到映射
studentScores.put("zs", 100);
studentScores.put("ls", 97);
studentScores.put("Mike", 99);

// 获取键对应的值
int score = studentScores.get("Mike");

// 移除zs对应的键值对
studentScores.remove("zs");

遍历HashMap的键值对

如果想要遍历Map映射中的所有键值对,可以使用for-each循环。

for (Map.Entry<Integer, Integer> entry : hashMap.entrySet()) {
	int key = entry.getKey();
	int door = entry.getValue();
	System.out.println(key + "对应的房间是" + door);
}
  • Map.Entry一般用于表示键值对,包括键值对,定义了getKey()getValue()两个方法。
  • hashMap.entrySet()返回一个包含Map中所有键值对的集合,每个元素都是一个Map.Entry对象。

题目


题目描述
假设你手里有一串钥匙,这串钥匙上每把钥匙都有一个编号,对应着一个房门的编号。现给你一个房门编号,你需要判断是否能够打开该房门。

输入描述
测试数据共有多组。
第一行为一个整数 s,表示共有多少组测试数据。
每组第一行有一个整数 n,表示钥匙串上有多少把钥匙。
后面共有 n 行输入,每行两个整数,第一个整数 k 表示钥匙编号,第二个整数 d 表示房门编号。
最后一行有一个整数 x,表示需要打开的房门编号。

输出描述
输出多组,每组占一行。 如果能打开,则输出钥匙编号,不能打开则输出“Can’t open the door.”。

程序编写


import java.util.Map;
import java.util.HashMap; //导入Map和HashMap
import java.util.Scanner;

public class Main {
    public static void main (String[] args) {
        Scanner scanner = new Scanner(System.in);
        int s = scanner.nextInt(); //获取整数s,表示s组测试数据
        
        for (int i = 0; i < s; i++) {
            int n = scanner.nextInt(); //钥匙的数量
            
            Map<Integer, Integer> hashMap = new HashMap<>(); //创建一个Map
            for (int j = 0; j < n; j++) {
                int key = scanner.nextInt(); //钥匙编号
                int door = scanner.nextInt(); //房门编号
                hashMap.put(door,key); //将key和door添加到Map中
            }
            int x = scanner.nextInt(); //要打开的房门编号
            if (hashMap.keySet().contains(x)) {
                System.out.println(hashMap.get(x));
            } else {
                System.out.println("Can't open the door.");
            }
        }
        
        scanner.close();
    }
}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值