黑马程序员技术交流社区
标题:
Map集合为什么不能用增强for循环来迭代?
[打印本页]
作者:
韩军博
时间:
2011-12-10 10:09
标题:
Map集合为什么不能用增强for循环来迭代?
本帖最后由 韩军博 于 2011-12-10 23:34 编辑
请给位详细的解释
作者:
小春同学
时间:
2011-12-10 10:33
本帖最后由 熊明春 于 2011-12-10 10:36 编辑
Map集合用增强for循环来迭代是可以的,例:
有集合Map<Students,String> hs = new HashMap(); //其它添加键和值的put()代码就不写了
取出方式可以有:
for(Object key : hs.keySet()){
System.out.print(key+"--->");
System.out.println(hs.get(key));
}
作者:
侯伟浩
时间:
2011-12-10 11:54
怎么不能,就是方式不同,例子
public void method()
{
Map<String,String> map=new TreeMap<String,String>();
map.put("123", "JIm");
map.put("456", "DOm");
for(Map.Entry<String, String> me:map.entrySet())
{
System.out.println(me.getKey()+"----"+me.getValue());
}
}
复制代码
作者:
李明
时间:
2011-12-10 13:32
应该是可以的啊,可以用entrySet()取得所有的键值关系,存入Set集合中,就可以用增强for循环迭代了,用getKey()取键,用getValue()取值。
作者:
王冀
时间:
2011-12-10 23:02
本帖最后由 王冀 于 2011-12-10 23:05 编辑
从java的实现机制来说,能够迭代的类必须实现Iterable接口,而Map没有继承该接口,因此不能迭代。
个人认为对它直接迭代也不易进行处理。因为你不能确定Iterator的next方法返回的类型是什么。因此需要内部方法entrySet进行处理,将其中的每一个二元组转化为一个Map.Entry<,>对象才能处理。
作者:
我心飞翔
时间:
2011-12-10 23:11
今天主要讲了java技术中的jdk5.0中的一些增强特性包括反射、
枚举、for循环的增强以及内省技术。在这里必须使用jdk5.o版
本的编译器。
1。专业的测试工具junit。junit中的方法执行过程是void
setUpBeforeClass()首先执行且执行一次,然后是void setUp()
方法,在下面是测试程序,然后执行void tearDown(),最后执
行void tearDownAfterClass()方法。
2.静态导入
3。自动装箱与拆箱技术;将基本的数据类型封装到一个对象中
的过程成为装箱,反之则称为拆箱。一共有八种类的包装器
Integer Byte Short Long Float Double Character Boolean.
所有的类包装器中的数据都是常量无法改变。5.0版本引入了自
动装箱与拆箱技术大大减轻了程序员的编码繁琐程度。
4 增强的for循环 for循环只能用在数组和实现了iterator接口
的集合类上。语法格式for(变量类型 变量:需要迭代的数组或
集合){}
map集合并没有实现iterator接口因此不能用增强的for循环。
但map由一个map.entrySet()方法返回set集合因此可以使用增强
的for循环。
5可变参数 Arrays.asList方法返回List集合。如果方法接收的
是可变参数那么传递进去的可以是数组也可以是多个值。可变参
数只能处于参数列表的最后, 所以一个方法最多只能有一个长度
可变的参数
6枚举类
枚举类的构造函数为私有的。
枚举类可以实现接口或继承抽象类
7反射技术 反射就是把Java类中的各种成分映射成一个个的
java对象。例如,一个类有:成员变量,方法,构造方法,包等
等信息,利用反射技术可以对一个类进行解剖,把各个组成部分
映射成一个个对象。
8内省Apache组织开发了一套用于操作JavaBean的API,这套API
考虑到了很多实际开发中的应用场景,因此在实际开发中很多程
序员使用这套API操作JavaBean,以简化程序代码的编写。
Beanutils工具包的常用类:
BeanUtils
PropertyUtils
ConvertUtils.regsiter(Converter convert, Class clazz)
看同事的来给你答案
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2