为了账号安全,请及时绑定邮箱和手机立即绑定

hashmap如何获取键值?

hashmap如何获取键值?

慕侠2389804 2019-02-20 12:03:10
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 回答

?
Helenr

TA贡献1780条经验 获得超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()])

这样传进去的数组就会被填充,然后返回,效率高点。

查看完整回答
反对 回复 2019-03-01
?
茅侃侃

TA贡献1842条经验 获得超21个赞

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

toArray返回的是数组

查看完整回答
反对 回复 2019-03-01
?
杨魅力

TA贡献1811条经验 获得超6个赞

我是这么做的

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的时候的出现了类型丢失的错误,自己对于泛型这部分也只是看过而已,感谢指出错误 @驽马

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 491 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信