java八股概念补充

1、迭代器作用

/**
 * @author qc
 * @date 2021-4-20
 */
public class TestArrayList {

    @Test
    public void testArrayList(){
        /**
         * 集合list和 SuperArray基本上没有任何区别
         */
        //链表
//        List<User> list = new LinkedList<>();
        List<User> list = new ArrayList<>();

        list.add(new User("AAA","111"));
        list.add(new User("BBB","222"));
        list.add(new User("CCC","333"));
        list.add(new User("DDD","444"));
        list.add(new User("EEE","555"));
        //放在1的后面
        list.add(2,new User("fff","666"));
        //删除该下标上的数据
        list.remove(3);

        /**删除所传入该对象的数据
         * 不能够直接删除,因为remove(object)方法默认用equals对比内存地址
         * 所以要在User中重写equals,就可以将该对象删除
         */
        list.remove(new User("BBB","222"));

        //清空list
//        list.clear();

        //普通for循环遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getUsername());
        }

        //增强for循环遍历
        for(User user : list){
            System.out.println(user.getUsername());
        }



        /** 迭代器
         * 快捷键:list.iterator().var回车 或 list.iterator();alt+enter
         * 三大方法:iterator.hasNext() 有没有下一个 返回ture或false
         *          iterator.next()   拿到下一个
         *          iterator.remove();
         */
        Iterator<User> iterator = list.iterator();
        while (iterator.hasNext()){
            User next = iterator.next();
            System.out.println(next);
        }

        /**iterator.remove();作用很强大
         * 1.放在增强for循环中不会报错
         * 2.用于删除操作,不会出现list.remove()中因元素前移导致不能够完全删除的情况
         */

        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(1);
        list1.add(1);
        list1.add(2);
        list1.add(2);
        list1.add(4);
        list1.add(5);

        for (int i = 0; i < list.size(); i++) {
            if(list1.get(i) == 2){
                list1.remove(i);
                //可以解决元素前移导致不能够完全删除的情况,但会比较麻烦
                i--;
            }
        }

//    增强for循环如果执行删除方法,一定会报错
//        for(Integer integer : list1){
//            if(integer == 4){
//                list1.remove(integer);
//            }
//        }

        System.out.println("---------------");

        Iterator<Integer> iterator1 = list1.iterator();
        while (iterator1.hasNext()){
            Integer next = iterator1.next();
            if(next == 2){
                iterator.remove();
            }
        }
        for(Integer integer : list1){
            System.out.println(integer);
        }


    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值