ArrayList的循环

ArrayList的循环

随机生成20个[1,100]之间的随机整数,存入一个数组,然后取出其中大于15的整数放入一个List集合,最后利用循环在控制台上输出。然后将集合中的奇数全部清除,只留下偶数,查看剩余的偶数以及个数。

import java.util.*;

public class RandomArrayList {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        //设置变量控制打印的个数
        int num = 5;
        //创建一个长度为num的数组
        int[] a = new int[num];
        Random random = new Random();
        for (int i = 0; i < num; i++) {
            //随机生成1~100的数
            int sc = (int) (random.nextInt(101));
            //将生成的数存入数组
            a[i] = sc;
            //判断是否大于50;若大于存入ArrayList
            if (sc > 50) {
                list.add(sc);
            }

        }
        System.out.println(Arrays.toString(a));
        System.out.println(list);
        
        System.out.println("-----增强for------");
        for (int temp : list) {
            System.out.println(temp);
        }
        System.out.println("----迭代器-----");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        
        System.out.println("------ListIterator--------");
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()) {

            System.out.println(listIterator.next());
        }

        System.out.println("------普通for--------");
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) % 2 == 0) {
                System.out.println("移除偶数"+ list.remove(i));
                //每删除一个数时,下一个数的下标会自动为该数的下标,而该下标已经进行完循环判断,导致跳数
                //例:第五个数为非法时,删除第五个数,结束本次判断,i++,进行第六个数的判断。而原第六个数的下标改为
                //		五,原第七数下标改为六,对下标为六的数进行判断,原第六个数没有进行判断。i=i-1,继续判断一次
                //		解决该问题。							
                i-=i;
            }
        }
        System.out.println(list);
        System.out.println(list.size());
    }
}

/*
*备注:使用list.remove(int index)移除下标时将返回对应的value值;
使用list.remove(Object o)移除下标时将返回对应的boolen(ture/flase)值
* 可以使用 System.out.println()进行打印;;
*
* 使用for增强循环遍历ArrayList时,不能直接使用list.remove(int index);
* 临时变量 temp, list.remove(temp)此时被当作下标,产生数组越界
* Exception in thread “main” java.lang.IndexOutOfBoundsException: Index: 72, Size: 4
*
*使用迭代器时 iterator.next(),为一个Object对象,无法直接进行判断是否为偶数(%2==0)
*
*
*疑问: 使用ArrayList循环遍历对里面数据进行筛选时操作时只能使用普通for ?
*
*
* */

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值