如何访问HashTable中的值

时间:2014-10-26 21:07:50

标签: java hashtable

我想访问哈希表中的值,但在我的代码中有一个例外。我想访问hastable中(KEY,VALUE)中另一个类的构造函数值,这是我的类的代码

public class StudentReg {   
    public String RegNo,Program ,FName;

    StudentReg(int Roll , String Program, String FName)
    {
        this.RegNo = " Fall2k14_ "  + Roll +  " " + Program;
        this.FName = FName;
        this.Program = Program;

    }

现在我已经使用了哈希表,我希望使用迭代器访问hastable的值这是我的主类的代码我创建了哈希表的对象T并输入了键和值集获取迭代器中的值

public static void main(String[] args){
    Hashtable T = new Hashtable();

    T.put("Ahmed", new StudentReg(123,"BS(CS)","Murtaza"));
    T.put("Fahad", new StudentReg(456,"BE(EE)","...."));
    T.put("Alan", new StudentReg(769,"BBA","Rashee"));
    Set set =T.keySet(); // get set-view of keys
              // get iterator
    Iterator itr = set.iterator();
    while(itr.hasNext()) {
       StudentReg  S3 = (StudentReg) itr.next();
       System.out.println(S3 + ": " +T.get(S3.RegNo+""+S3.Program+""+S3.FName));

 } 

此时System.out.println(S3 +":" + T.get(S3.RegNo +"" + S3.Program +"& #34; + S3.FName));我想访问在StudentReg()的构造函数中传递的值; 但我无法做到这一点

2 个答案:

答案 0 :(得分:2)

你正在迭代你的键是字符串。如果要迭代StudentReg类的所有对象,则需要迭代values()

我强烈建议将类型参数添加到集合中。这样你的代码就无法编译,你会马上看到问题所在。

Hashtable<String, StudentReg> T
     = new Hashtable<String, StudentReg>();

或者如果使用java 7或更新版

Hashtable<String, StudentReg> T = new Hashtable<>();  

然后,您可以使用foreach结构迭代values()

for (StudentReg s : T.values()) {
    System.out.println(T.RegNo + " " + T.Program + " " + T.FName));
}

答案 1 :(得分:0)

您正在尝试强制转换String ...键集返回所有键,而不是值... 如果你想要键和值,你可以这样做:

public static void main(String[] args) {
    Hashtable<String, String> hashtable = new Hashtable<String, String>();
    hashtable.put("a", "1");
    hashtable.put("b", "2");
    for (Entry<String, String> tuple : hashtable.entrySet()) {
        System.out.println(tuple.getKey(), tuple.getValue());
    }
}