Hashtables不接受String作为键

时间:2012-10-13 19:33:00

标签: java string key hashtable

我不明白为什么Eclipse给我一个关于将BufferedReader返回的String传递给Hashtable的put(Object,Object)方法的错误。我已经阅读了API,我不认识任何线索。是否可能无法确定它是否会返回唯一的字符串?

字符串字典设置在文件的其他地方,我已将其删除到重要的位 - 问题和方法中的方法。任何与变量有关的事情。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Hashtable;

public class Model {
     private Hashtable hash=new Hashtable();
     private String dictionary;

     public void loadWords() throws IOException{
        BufferedReader br=null;

        try{        
            br=new BufferedReader(new FileReader(dictionary));
            do{
                hash.put(br.readLine(), new Node<E>);
            }
            while(br.readLine()!=null);

        }catch(IOException iOE){
            System.out.println("Fission mailed");
        }
        finally{
            br.close(); // Closing the buffered reader
        }
    }

2 个答案:

答案 0 :(得分:4)

看起来关键不是问题,价值部分是问题。 您无法将此new Node<E>添加为值。它必须具有特定类型,例如new Node<String>()new Node<Integer>()

答案 1 :(得分:1)

\ 1。您没有调用节点的构造函数: hash.put(br.readLine(),new Node);

要调用默认构造函数,您必须使用类的名称调用“方法”,如:

new String(); / *或* / new Node();

\ 2。通用类型&lt; E&gt;在班级宣言中没有看到任何地方。要使用它,您必须执行以下操作:


    public class Model<E> {
       private Hashtable<String, Node<E>> hash=new Hashtable<String, Node<E>> ();

..所以要么一直走,要么完全删除它。