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;

修复它