java 中哈希列表的字符串对象不匹配
String-Object mismatch for hashlist in java
我的哈希表有问题。我在方法中使用的 for 循环工作正常,但主循环中的相同循环给出了(无法将字符串转换为对象)错误。如果不匹配,为什么我的方法不报错?
我会记下hashlist对象的声明。 main 中的循环和方法
声明:
private static Hashtable hashlist2;
hashlist2 = new Hashtable<String,Course>();
方法:
private static void printmap(Hashtable<String,Course> hashlist, LinkedList<Course> list){
for(String courses : hashlist.keySet()){
hashlist.get(courses).print();
}
我在 main 中使用的 for 循环:
for(String courses : hashlist2.keySet()){//mismatch occurs here
if(courses.equals(coursecode)){
((Course) hashlist2.get(courses)).print();
check=true;//means "yeah we find a course"
break;//and break there no more loop needed
}
}
改变
private static Hashtable hashlist2;
hashlist2 = new Hashtable<String,Course>()
至
private static Hashtable<String,Course> hashlist2;
hashlist2 = new Hashtable<String,Course>()
当你使用原始类型Hashtable
时,编译器不知道键是String
类型,所以for(String courses : hashlist2.keySet())
无法通过编译。对于原始 Hashtable
,密钥被假定为 Object
.
类型
因为传递给 printmap
的参数是 Hashtable<String,Course> hashlist
类型,而在 main
中你声明了 private static Hashtable hashlist2; hashlist2 = new Hashtable();
这是非通用版本(这就是为什么当你迭代for循环你得到对象而不是字符串),你可以通过private static Hashtable<String,Course> hashlist2;
修复它
我的哈希表有问题。我在方法中使用的 for 循环工作正常,但主循环中的相同循环给出了(无法将字符串转换为对象)错误。如果不匹配,为什么我的方法不报错?
我会记下hashlist对象的声明。 main 中的循环和方法
声明:
private static Hashtable hashlist2;
hashlist2 = new Hashtable<String,Course>();
方法:
private static void printmap(Hashtable<String,Course> hashlist, LinkedList<Course> list){
for(String courses : hashlist.keySet()){
hashlist.get(courses).print();
}
我在 main 中使用的 for 循环:
for(String courses : hashlist2.keySet()){//mismatch occurs here
if(courses.equals(coursecode)){
((Course) hashlist2.get(courses)).print();
check=true;//means "yeah we find a course"
break;//and break there no more loop needed
}
}
改变
private static Hashtable hashlist2;
hashlist2 = new Hashtable<String,Course>()
至
private static Hashtable<String,Course> hashlist2;
hashlist2 = new Hashtable<String,Course>()
当你使用原始类型Hashtable
时,编译器不知道键是String
类型,所以for(String courses : hashlist2.keySet())
无法通过编译。对于原始 Hashtable
,密钥被假定为 Object
.
因为传递给 printmap
的参数是 Hashtable<String,Course> hashlist
类型,而在 main
中你声明了 private static Hashtable hashlist2; hashlist2 = new Hashtable();
这是非通用版本(这就是为什么当你迭代for循环你得到对象而不是字符串),你可以通过private static Hashtable<String,Course> hashlist2;