话题8 基本for循环与加强型for循环
2015-11-21 17:10
363 查看
1 加强型for循环概述
从 JDK 1.5起,增加了加强型for循环的用法,加强型for循环在操作数组和集合方面有很大方便性。虽然加强型for循环有很大便利性,但是加强型for循环也有一定局限性。表现在如下几个方面:(1)只能对数组元素进行顺序访问。
(2)只能访问集合中的所有元素。
(3)循环中没有当前索引,因此无法对指定元素进行操作。
2 加强型for循环的处理(实现)
加强型for循环只是在基本for循环的基础上做了一层简单的包装而已,其底层也是通过基本for循环来实现的。如下:
package chapter1; import java.util.HashSet; import java.util.Set; import org.omg.PortableServer.ID_ASSIGNMENT_POLICY_ID; public class MysSet<E> { private Set<E> ids = new HashSet<E>(); public void addIds(E id) { ids.add(id); } public boolean removeId(E id) { return ids.remove(id); } public static void main(String[] args) { MysSet<String> set = new MysSet<String>(); set.addIds("9011"); set.addIds("9022"); set.addIds("9033"); for (String str : set) { System.out.println(str); } } }
这是一个自定义集合,代码中for循环会出现错误,从而得知,加强型for循环要求右侧的变量为string和iterable型,而我们声明的MySet并不是iterable型。那怎样才能让他成为iterable型呢。实现接口iterable即可。下面是改进后的程序:
package chapter1; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class MysSet<E> implements Iterable<E> { private Set<E> ids = new HashSet<E>(); public void addIds(E id) { ids.add(id); } public boolean removeId(E id) { return ids.remove(id); } public Iterator<E> iterator() { return ids.iterator(); } public static void main(String[] args) { MysSet<String> set = new MysSet<String>(); set.addIds("9011"); set.addIds("9022"); set.addIds("9033"); for (String str : set) { System.out.println(str); } } }
程序运行结果
9011 9022 9033
小结:如果加强型for循环处理的不是数组类型,那么会转换为去调用加强型for循环右侧变量的iterator()方法,而该方法是在iterable中声明的,因此右侧的变量必须是数组类型或者iterable类型。从处理方式上来看,加强型for循环在处理集合类(确切说是iterable类型的元素时),底层也是基本型for循环实现的。
3加强型for循环总结
(1) 加强型for循环的右侧的变量(即冒号后面的集合)必须为数组类型或者iterable类型。(2) 底层是依赖基本型for循环来实现的。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统