问答详情
源自:5-3 学生选课---删除 Map 中的学生

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

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

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

提问者:Edward_Xie 2016-08-09 11:22

个回答

  • 带着天使反上帝
    2016-08-09 20:49:37
    已采纳

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

  • 小竹摇曳
    2016-08-09 19:16:14

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

  • 小竹摇曳
    2016-08-09 15:48:10

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

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

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