黑马程序员技术交流社区
标题:
加强for循环
[打印本页]
作者:
vipzh
时间:
2012-12-1 12:15
标题:
加强for循环
什么是加强for循环?给个例子
作者:
孙玉伟
时间:
2012-12-1 12:21
增强for循环相对于传统的for循环在集合遍历来的更效率,其内部也是调用迭代实现的。
下面举个例子:
public class Test{
public static void main(String[] args)
{
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 5000000; i++)
{
list.add(11);
}
long start = System.currentTimeMillis();
int size = list.size();
int c1 = 1;
for (int i = 0; i < size; i++)
{
c1 = list.get(i);
}
System.out.println("for + get(i)方法: " + (System.currentTimeMillis() - start));
long start2 = System.currentTimeMillis();
for (int c2 : list)
{
}
System.out.println("Iterator(foreach)方法:" + (System.currentTimeMillis() - start2));
}
}
结果:
for + get(i)方法: 94
Iterator(foreach)方法:234
在把ArrayList改为LinkedList,我这里内存溢出了,于是list改成50000
结果:
for + get(i)方法: 6969
Iterator(foreach)方法:0
作者:
ljhheima
时间:
2012-12-1 12:47
格式:for(类型名 对象名:数组或集合)
作用:遍历数组或集合中所有元素
作者:
彭璞
时间:
2012-12-1 16:03
/*for增强格式:for(type 变量名:集合变量名){...}
* 缺点:对于数组,不能方便的访问下标值;
* 对于集合,与使用interator相比,不能方便的删除集合中的内容(在内部也是调用interator);
* 出了简单遍历并读取其中的内容外,不建议使用怎强的for循环;
* 用法:一遍历数组
* for(Type value:array){
* expression value;
* }
* 以前我们这样写:
* void someFunction(){
* int[] array={1,2,3,4};
* int total=0;
* for(int i =0;i<array.length;i++)
* {
* total+=array
;
* }
* System.out.println(total); 显然:for/in(for each)循环自动控制一次遍历数组中的
* 现在只要这样写 然后将它赋值给一个临时变量(如int n),然后再循环体中可直接对
* void someFunction(){ 此临时变量进行操作。这种循环缺点是:
* int[] array ={1,2,3,4}; 1.只能顺次遍历所有元素,无法实现复杂循环,如退回之前遍历过的元素
* int total = 0; 2.循环变量i不可见,不能知道循环到第几个元素
* for(int n:array){
* total+=n;
* }
* System.out.println(total);
* }
*
* 二:遍历集合
* 语法: for(Type value:Iterable){ for/in循环遍历的集合必须是实现Iterable接口的
* expression value;
* }
* 以前这样写:
* void someFunction(){
* List list = new ArrayList();
* list.add("hello");
* list.add("hello");
* list.add("hello");
* String s = "";
* for(Iterator iter = list.iterator();iter.hasNext();)
* {
* String temp = (String)iter.next();
* s += temp;
* }
* System.out.println(s);
* }
* 现在这样写
* void someFunction(){
* List list = new ArrayList();
* list.add("hello");
* list.add("hello");
* list.add("hello");
* String s = "";
* for(Object o :list)
* {
* String temp = (String) o;
* s+=temp;
* }
* System.out.println(s);
* }
* 结合泛型就更简单
* void someFunction(){
* List list = new ArrayList();
* list.add("hello");
* list.add("hello");
* list.add("hello");
* String s = "";
* for(String temp:list)
* {
* s +=temp;省去了对强制类型转换步骤
* }
* System.out.println(s);}
* 以上代码会被编译器转化为:
* void someFunction(){
* List list = new ArrayList();
* list.add("hello");
* list.add("hello");
* list.add("hello");
* String s = "";
* for(Iterator iter = list.iterator();iter.hasNext();)
* {
* String temp = iter.next();
* s += temp;
* }
* System.out.println(s);
* }
*
* 在这种操作中,Iterator是不可见的,所以需要调用Iterator.remove()方法。
* 所以for增强方法可以提高代码简洁行,是更方便,但是也有局限性,要选择使用;
* */
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2