JAVA中常见的循环有几种?

来源:互联网 发布:京东云服务器绑定域名 编辑:程序博客网 时间:2024/05/19 06:49

我常用到的共有6种,其它的循环体我就不知道,如果有请大家指点。

1、for循环
示例:

        /**         * 定义一个list集合         * 给list集合添加10个数据         */        List<String> list = new ArrayList<String>();        for(int i = 0; i < 10; i ++){            list.add("第"+(i+1)+"个数据");        }        /**         * For循环                  */        for(int i = 0;i < list.size();i++){            System.out.println("for循环:"+list.get(0));        }

执行结果:

for循环:第1个数据for循环:第2个数据for循环:第3个数据for循环:第4个数据for循环:第5个数据for循环:第6个数据for循环:第7个数据for循环:第8个数据for循环:第9个数据for循环:第10个数据

2、增强FOR循环,注意,它与for循环的算法不同
示例:

        /**         * 增强For循环的使用方法         */        for(String string : list){            System.out.println("增强for循环:"+string);        }

执行结果:

增强for循环:第1个数据增强for循环:第2个数据增强for循环:第3个数据增强for循环:第4个数据增强for循环:第5个数据增强for循环:第6个数据增强for循环:第7个数据增强for循环:第8个数据增强for循环:第9个数据增强for循环:第10个数据

增强for有缺点,示例代码如下:

        /**         * 增强For循环的缺点:在循环时,不能对目标数据添加元素,会出现并发问题         */        for(String string:list){            if("第6个数据".equals(string)){                list.add(10, string);            }            System.out.println("增强for循环在执行时,目标数据不能添加元素:"+string);        }

执行结果如下 :

增强for循环在执行时,目标数据不能添加元素:第1个数据增强for循环在执行时,目标数据不能添加元素:第2个数据增强for循环在执行时,目标数据不能添加元素:第3个数据增强for循环在执行时,目标数据不能添加元素:第4个数据增强for循环在执行时,目标数据不能添加元素:第5个数据增强for循环在执行时,目标数据不能添加元素:第6个数据Exception in thread "main" java.util.ConcurrentModificationException    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)    at java.util.ArrayList$Itr.next(Unknown Source)    at project1.ForDemo.main(ForDemo.java:43)

3、迭代器
示例代码如下:

        /**         * 迭代器循环         */        Iterator<String> iterator = list.iterator();        while(iterator.hasNext()){            System.out.println("迭代器循环:"+iterator.next());        }

执行结果:

迭代器循环:第1个数据迭代器循环:第2个数据迭代器循环:第3个数据迭代器循环:第4个数据迭代器循环:第5个数据迭代器循环:第6个数据迭代器循环:第7个数据迭代器循环:第8个数据迭代器循环:第9个数据迭代器循环:第10个数据

注意:迭代器在使用时与增强for循环有相同的弊端
示例代码如下:

        /**         * 迭代器在进行循环时,目标数据无法直接更改,要通过迭代器的方法才可以,否则也会出现并发问题         */        Iterator<String> iterator1 = list.iterator();        while(iterator1.hasNext()){            String val = iterator1.next();            if("第2个数据".equals(val))                list.add("有第二个数据");            System.out.println("迭代器循环:"+val);        }

结果如下 :

迭代器循环:第1个数据Exception in thread "main" java.util.ConcurrentModificationException    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)    at java.util.ArrayList$Itr.next(Unknown Source)    at project1.ForDemo.main(ForDemo.java:67)迭代器循环:第2个数据

4、while循环
示例代码如下 :

        /**         * while循环         * 注意:使用前要注意判断list不能为null         */        int i = 0;        while (i < list.size()) {            System.out.println("wile循环: "+list.get(i));            i++;        }

结果如下 :

wile循环: 第1个数据wile循环: 第2个数据wile循环: 第3个数据wile循环: 第4个数据wile循环: 第5个数据wile循环: 第6个数据wile循环: 第7个数据wile循环: 第8个数据wile循环: 第9个数据wile循环: 第10个数据

5、do…while循环
示例代码如下:

        /**         * do...while循环         * 注意:使用do...while循环时,要注意判断要循环的目标是否为空,是否有值存在         */         int i = 0;        if(list != null && list.size() > 0){            i = 0;            do{                System.out.println(list.get(i));                i++;            }while(i < list.size());        }

执行结果如下:

第1个数据第2个数据第3个数据第4个数据第5个数据第6个数据第7个数据第8个数据第9个数据第10个数据

6、枚举的遍历方法,类似于迭代器
示例代码如下 :

        Vector vector = new Vector<>();        for(int i = 0; i < 10; i++){            vector.add("vector的第"+(i+1)+"个数据");        }        Enumeration enumeration = vector.elements();        while(enumeration.hasMoreElements()){            System.out.println(enumeration.nextElement());        }

执行结果:

vector的第1个数据vector的第2个数据vector的第3个数据vector的第4个数据vector的第5个数据vector的第6个数据vector的第7个数据vector的第8个数据vector的第9个数据vector的第10个数据
0 0