HashMap<Teacher,Student> one = new HashMap<>();//Teacher,student都是自定义的类
one.put(wang,wan);//one.put(Teacher,Student)
应该如何获取hashMap.key
我google了发现一些做法但是都没有什么用
例如
Teacher[] i = one.keyset().toArray(new Teacher[0]);
我想问一下如何获取key同时可以新定义一个对象来引用key
主要我无法解决的是one.keyset().toArray(new Teacher[0])
返回的是一个超类,我没有办法强制转化,希望可以给我一点提示或者解决的方法,java新手。
toArray方法體中是透過強制型別轉化,是根據你傳進去的型別進行強轉的。你這個
new Teacher[0]
就是進行傳類型用的,所以為了復用,建議直接寫這樣傳進去的陣列就會被填充,然後返回,效率高點。
toArray回傳的是陣列
關於取得hashkey,請自行查閱api文件吧。熟悉jdk,對學習java來說非常重要。我保證jdk中有這樣的方法。你可以查閱hashmap或它的父類別的文檔。
關於這個定義:
如果是我,我會選擇用:
前一種定義會導致類型資訊遺失,你必須強制轉型才能取得你想要的類型,而且,非常不安全。這也違背了泛型設計的初衷。
以上。
我是這麼做的
之前一直錯的原因可能就是使用map的時候的出現了類型丟失的錯誤,自己對於泛型這部分也只是看過而已,感謝指出錯誤 @驛馬