Java 如何访问哈希表中的值
我想访问哈希表中的值,但在我的代码中有一个异常。我想访问hastable中(KEY,VALUE)中另一个类的构造函数值这是我的类的代码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 + " "
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));
}