HashMap应用 Java

题目详情:

7-3 HashMap应用 (10 分)

Map接口提供了将key映射到值得对象,用于存储键-值对,key不重复。主要解决通过key查找 value的应用,比如 通过学号查找学生信息。可以将学号key与 学生信息Student进行存储。 ######Map接口常用的实现类HashMap和TreeMap,HashMap对象 中key的存储一般是无序的,通过哈希函数进行查找对应value值。对于经常需要进行查找的数据可以采用散列映射来存储这样的数据,即为数据指定一个查找它的关键字,然后按着“健-值”对,将关键字和数据一并存入散列映射中。 TreeMap类 在存储的时候会对key进行排序,但key对象要能比较大小,否则 key类需要实现Comparable接口

HashMap 方法 put()添加键和值,values()取值集合,keyset()键集合,ContainsKey()键是否存在

ContainsValues()判断值是否存在

HashMap常用方法及使用案例 参看 如下PDF文件

HashMap.pdf

仿照PDF文件例子,设计一个英语单词查询的程序,用户输入一个英文单词回车确认,显示英文单词的汉语翻译,编写完整代码

过程如下:

(1)定义一个class WordDict单词字典类,有Map<String,String> hashmap;属性用于存储英文单词和中文单词 键值对;

无参构造函数WordDict() 创建hashmap对象实体;

void add(String englishword,String chineseword)实现向hashmap对象增加一个键值对;

String find(String englishword)从hashmap对象中查找englishword对应的中文单词,找到返回对应中文单词字符串,没找到返回null;

void print() 输出字典所有键值对(输出形式 英文单词 中文单词)

(2)主类Main中的main方法:

1)首先创建一个WordDict单词字典对象;

2)从键盘输入多个英文单词与中文单词键值对,每输入一个英文单词和中文单词 就添加到字典对象中,输入字符串-1作为键值对输入结束

3)接下来 输入查找的英文单词 存放到 searcheng字符串中

4)然后 输出 字典键值对

5)查找英文单词searcheng 对应中文单词,然后输出找到的中文单词,如果没找到 "输出没查到对应中文单词”

部分代码提示:

class WordDict{
    Map<String,String> hashmap;
    WordDict(){
        // 补充代码 实现 hashmap对象创建
    }
    void add(String englishword,String chineseword) {
        //将键值对 添加到 hashmap
    }
    String find(String englishword) {
        // 在hashmap中查找englishword对应中文,找到,返回对应中文否则 返回null
    }
    void print() {
    //通过 keySet(),get()方法实现输入所有键值对 输出格式:英文单词 中文单词(中间1个空格)不清楚可参考PDF文件

        }
    }
}
public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        WordDict wd=new WordDict();
        Scanner sc=new Scanner(System.in);
        //在下面编写代码实现:通过键盘输入给字典添加键值对 即 英文单词 和中文单词,以-1字符串作为结束


        String searcheng=sc.next();//输入查询的英文单词
        System.out.println("输出所有字典元素:");
    //在下面编写代码 实现 WordDict字典对象 键值对的输出  按 英文单词 中文单词 输出

        System.out.println("输出对应中文单词:");
     //在下面编写代码实现:输出 searcheng对应的 中文单词,如果没找到 输出"没查到对应中文单词"


    }

}

输入格式:

grandness 伟大
swim 游泳
-1

swim

-1前面 是 字典中的英文和中文键值对,空格分隔 ,swim是 要查询的英文单词

输出格式:

输出所有字典元素:

grandness 伟大

swim 游泳

输出对应中文单词:

游泳 (如果没找到对应中文,显示"没查到对应中文单词"

输入样例:

在这里给出一组输入。例如:

grandness 伟大  
swim  游泳
-1
swim

结尾无空行

输出样例:

在这里给出相应的输出。例如:

输出所有字典元素:
grandness 伟大
swim 游泳
输出对应中文单词:
游泳

结尾无空行

答案代码:

import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Main {
        public static void main(String[] args) {
            WordDict wd=new WordDict();
            Scanner sc=new Scanner(System.in);
            //在下面编写代码实现:通过键盘输入给字典添加键值对 即 英文单词 和中文单词,以-1字符串作为结束
            while(true){
                String key = sc.next();
                if(key.equals("-1")){
                    break;
                }
                String value = sc.next();
                if(value.equals("-1")){
                    break;
                }
                wd.add(key,value);
            }

            String searcheng=sc.next();//输入查询的英文单词
            System.out.println("输出所有字典元素:");
            //在下面编写代码 实现 WordDict字典对象 键值对的输出  按 英文单词 中文单词 输出
            wd.print();
            System.out.println("输出对应中文单词:");
            //在下面编写代码实现:输出 searcheng对应的 中文单词,如果没找到 输出"没查到对应中文单词"
            String s = wd.find(searcheng);
            if(s==null){
                System.out.println("没查到对应中文单词");
            }else{
                System.out.println(s);
            }

        }

} 
class WordDict {
    Map<String,String> map ;
    public WordDict(){
        map = new HashMap<>();
    }
    public void add(String englishWord,String chineseWord){
        map.put(englishWord,chineseWord);
    }
    public String find(String englishWord){
        if(!map.containsKey(englishWord)){
            return null;
        }
        return map.get(englishWord);
    }
    public void print(){
        Set<String> strings = map.keySet();
        for(String value:strings){
            System.out.println(value+" "+map.get(value));
        }
    }

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值