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

HashMap类这个容器是不是不能用foreach直接遍历?

HashMap类这个容器是不是不能用foreach直接遍历?

因为看到老师打的testentryset()里头先用一个set<entry<string,student>>容器保存了students里的键值对,然后再遍历他,我想能不能直接遍历students这个容器?

正在回答

3 回答

for(Map.Entry<String,Student> entry  : students.entrySet() ){

}
1 回复 有任何疑惑可以回复我~
#1

Edward_Xie 提问者

解决问题了,非常感谢!
2016-08-10 回复 有任何疑惑可以回复我~

迭代器实现了Iterable接口则允许对象成为“foreach”语句的目标,类集接口Collection是Iterable的子接口,而映射Map并没有。

0 回复 有任何疑惑可以回复我~

可以直接遍历,两种遍历的思路不一样,第一个是通过keySet()方法获得一个键的集合,再通过键获得值(学生对象)。

第二种方法是获得键值对的集合,这样从集合中取得每一个对象获取键,获取值就可以了。

我感觉这两种方式其实都算直接遍历,因为集合中的内容不是一个值而是一对值,为了保证键和值对应你不能直接取键再取值,有可能不对应。

0 回复 有任何疑惑可以回复我~
#1

Edward_Xie 提问者

我直接遍历的话打了如下代码: public void testEntrySet3(){ for(Entry<String, Student>entry:students){ } } students这里编译报错,提示只能通过 java.lang.Iterable 的数组或实例进行迭代 这是怎么回事?
2016-08-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

HashMap类这个容器是不是不能用foreach直接遍历?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信