java - hashmap如何获取键值?
迷茫
迷茫 2017-04-17 15:30:36
0
4
608
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新手。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(4)
小葫芦

toArray方法體中是透過強制型別轉化,是根據你傳進去的型別進行強轉的。你這個new Teacher[0]就是進行傳類型用的,所以為了復用,建議直接寫

HashMap<Teacher,Student> map = new HashMap<>();//Teacher,student都是自定义的类
...
Set<Teacher> set = map.keySet();
Teacher[] teachers = set.toArray(new Teacher[set.size()])

這樣傳進去的陣列就會被填充,然後返回,效率高點。

刘奇
Teacher[] i = one.keyset().toArray(new Teacher[0]);

toArray回傳的是陣列

阿神

關於取得hashkey,請自行查閱api文件吧。熟悉jdk,對學習java來說非常重要。我保證jdk中有這樣的方法。你可以查閱hashmap或它的父類別的文檔。

關於這個定義:

HashMap<Teacher,Student> one = new HashMap<>();//Teacher,student都是自定义的类

如果是我,我會選擇用:

HashMap<Teacher,Student> one = new HashMap<Teacher,Student>();//Teacher,student都是自定义的类

前一種定義會導致類型資訊遺失,你必須強制轉型才能取得你想要的類型,而且,非常不安全。這也違背了泛型設計的初衷。

以上。

迷茫

我是這麼做的

Map<Teacher,ArrayList> one = new HashMap<Teacher,ArrayList>();
one.put(wang,wang.getStuList());
Teacher i = one.keySet().toArray(new Teacher[0])[0];
System.out.println(i.toString());

之前一直錯的原因可能就是使用map的時候的出現了類型丟失的錯誤,自己對於泛型這部分也只是看過而已,感謝指出錯誤 @驛馬

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板