麻烦帮我看下这段代码
Iterator it=(Iterator) football.values().iterator()
public static void main(String[] args) { Map<Integer,String>football=new HashMap<Integer,String>(); System.out.println("请输入数据"); Scanner footballcup=new Scanner(System.in); int i =0; while(i<5){ System.out.println("年份"); Integer key=footballcup.nextInt(); System.out.println("国家"); String value=footballcup.next(); football.put(key, value); i++; //定义HashMap的对象并添加数据 } System.out.println("*****************"); Iterator it=(Iterator) football.values().iterator(); //使用迭代器的方式遍历
Iterator it=(Iterator) football.values().iterator(); 这句话是eclipse提示修改的。但是我并不明白原理。
为什么课程当中不需要转型,而我的代码需要转型,是因为添加了泛型吗?如果是,那又是为什么不需要转型呢?
我的key值是Integer类型,因此我这样写。Iterator<Integer,String> it= football.values().iterator();,为什么这个又报错的呢?
如果我使用迭代器不仅要输出value,还想输出key,要怎么写呢?
正在回答
Iterator it=(Iterator) football.values().iterator(); //就是得到Map的values迭代器iterator,目的是下面使用iterator遍历value。
1)Iterator需要添加类型约束,你遍历的values是String,所以这里你需要改成StringIterator<String> it = football.values().iterator();
2)Map.values()遍历所有的value,但不能遍历key
3)如果想遍历key和value
Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
Iterator it=(Iterator) football.values().iterator();
这行代码有问题,迭代强转,我没这样用过,正确输入:
Iterator<String> it = football.values().iterator();
// 使用迭代器的方式遍历
while (it.hasNext()) {
System.out.println(it.next());
}
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星