トピックの詳細:
7-3 HashMapアプリケーション(10ポイント)
マップインターフェイスは、キーを繰り返さずにキーと値のペアを格納するための値オブジェクトへのマッピングキーを提供します。これは主に、学生番号による学生情報の検索など、キーによる値の検索のアプリケーションを解決します。学生証キーと学生情報学生を保存できます。###### Mapインターフェイスの一般的に使用される実装クラスはHashMapとTreeMapです。HashMapオブジェクトへのキーの格納は通常順序付けられておらず、対応する値はハッシュ関数を介して検索されます。頻繁に検索する必要のあるデータの場合、ハッシュマップを使用してそのようなデータを格納できます。つまり、データを検索するためのキーワードを指定し、「キー値」に従ってキーワードとデータをハッシュに格納できます。 "ペア。マッピング。TreeMapクラスは保存時にキーを並べ替えますが、キーオブジェクトはサイズを比較できる必要があります。そうでない場合、キークラスはComparableインターフェイスを実装する必要があります。
HashMapメソッドput()はキーと値を追加し、values()は値セットを取り、keyset()キーセット、ContainsKey()キーが存在します
containsValues()は、値が存在するかどうかを判別します
HashMapの一般的な方法と使用例については、次のPDFファイルを参照してください。
PDFファイルの例に従って、英語の単語クエリプログラムを設計します。ユーザーが英語の単語を入力し、Enterキーを押して確認すると、英語の単語の中国語訳が表示され、完全なコードが記述されます。
プロセスは次のとおりです。
Map<String,String> hashmap;
(1)英語の単語と中国語の単語のキーと値のペアを格納する属性を持つクラスWordDict単語辞書クラスを定義します。
引数なしのコンストラクターWordDict()は、ハッシュマップオブジェクトエンティティを作成します。
void add(String englishword、String Chineseword)は、キーと値のペアをハッシュマップオブジェクトに追加することを実装します。
String find(String englishword)は、ハッシュマップオブジェクトから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对应的 中文单词,如果没找到 输出"没查到对应中文单词"
}
}
入力フォーマット:
壮大な素晴らしい
スイムスイム
-1
泳ぐ
-1の前には、辞書で英語と中国語のキーと値のペアがあり、スペースで区切られています。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));
}
}
}