JAVA中常见的循环有几种?

我常用到的共有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个数据
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值