HashMap仅包含Null,Put不起作用

时间:2019-06-16 23:44:00

标签: java hashmap

我一直在尝试编写一个使用哈希图的字典程序。我有两个由单词和定义组成的arraylist,然后有一个hashmap。 但是,我检查了我的哈希表,里面充满了空条目。我不知道为什么put函数不起作用。有什么建议吗?

import java.io.*;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Map;

public class Dictionary10{

  public static void main(String[] args)
  {
    ArrayList<String> words = new ArrayList<String>();
    ArrayList<String> definitions = new ArrayList<String>();
    HashMap<String, String> map = new HashMap<String, String>();

    Scanner sc = new Scanner(System.in);  
    System.out.println("Enter a word for a definition.");
    String find = sc.nextLine(); 

   ////ASSUME BOTH ARRAYLISTS CONTAIN WORDS AND DEFINITIONS 


    for(int k = 0; k< words.size(); k++)
    {      
    map.put((words.get(k)), (definitions.get(k)));  
    }    

    for(int l = 0; l<words.size(); l++)
    {
    if((words.get(l).indexOf(find)) != -1)
    {
      System.out.println(find + " : " + map.get(find));  
    }
    }
    sc.close();


}

}

如果我输入类似“ alarm”的内容,则会收到警报:null。 字典没有输入值,我也不知道为什么。

1 个答案:

答案 0 :(得分:1)

您的代码允许find列表中某个单词内的words部分匹配。但是,不是查找完整单词的定义,而是查找包含在完整单词中的部分单词的定义,该单词显然不存在。

也许定义词是“警报系统”,而您的find包含"alarm"

您应该在地图中查找定义词:

if((words.get(l).indexOf(find)) != -1)
{
  System.out.println(find + " : " + map.get(words.get(l)));  // instead of map.get(find)
}