Java 如何访问哈希表中的值

Java 如何访问哈希表中的值,java,hashtable,Java,Hashtable,我想访问哈希表中的值,但在我的代码中有一个异常。我想访问hastable中(KEY,VALUE)中另一个类的构造函数值这是我的类的代码 public class StudentReg { public String RegNo,Program ,FName; StudentReg(int Roll , String Program, String FName) { this.RegNo = " Fall2k14_ " + Roll + " "

我想访问哈希表中的值,但在我的代码中有一个异常。我想访问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;

    }
现在我使用了一个hashtable,我想用迭代器访问hasttable的值,这是我的主类的代码,我创建了hashtable的一个对象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+”“+S3.FName));我想访问StudentReg()构造函数中传递的值;
但我无法做到这一点

您正在试图释放字符串。。。键集返回所有键,而不是值。。。 如果需要键和值,可以执行以下操作:

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());
    }
}
publicstaticvoidmain(字符串[]args){
Hashtable Hashtable=新的Hashtable();
hashtable.put(“a”、“1”);
hashtable.put(“b”,“2”);
for(条目元组:hashtable.entrySet()){
System.out.println(tuple.getKey(),tuple.getValue());
}
}

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

我强烈建议向集合中添加类型参数。这样,您的代码就不会编译,您将立即看到问题所在

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

使用裸集合有什么意义吗?添加以避免强制转换迭代器。您会收到什么样的异常?将异常消息粘贴到question.java.lang.ClassCastException中,它显示的是地址,而不是数据Fahad:hashtable。StudentReg@15db9742艾伦:哈希表。StudentReg@6d06d69c艾哈迈德:哈希表。StudentReg@7852e922@henriquedg89我想用键访问值,但我想在构造器You的帮助下访问值两者都有,value和keyLewandoski不起作用,我两者都试过了。它显示了相同的例外情况。您是否删除了演员阵容中的线条?你不再需要它了。当然,但是for循环更好
Hashtable<String, StudentReg> T = new Hashtable<>();  
for (StudentReg s : T.values()) {
    System.out.println(T.RegNo + " " + T.Program + " " + T.FName));
}