A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


ListIterator和Iterator区别


Iterator只能正向遍历数组,没有构造器,通过Collection对象获取,只可以删除该元素,不能进行此方法以外的任何增删操作。光标指向当前元素的index。
       
        boolean hasNext() 如果仍有元素可以迭代,则返回 true。
        E next() 返回迭代的下一个元素。
        void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

==================Iterator的删除练习====================       
       
        // 1.Iterator的删除练习
        private static void test01(ArrayList<String> arr) {
                // 1.Iterator的删除练习,注意,只有获取之后才可以操作删除,而且一个元素删除只能操作一次。
                Iterator<String> it = arr.iterator();// 获取遍历
                while (it.hasNext()) { // 判断
                        if (it.next() == "cc") // 获取下一个元素,并判断
                                it.remove(); // 符合条件,则删除
                }
        }

ListIterator可以进行正向和逆向遍历操作,调用时没有当前元素,始终在于元素之间。可以在遍历时增删改操作。

        void add(E e)      将指定的元素插入列表(可选操作)。
        boolean hasNext()      以正向遍历列表时,如果列表迭代器有多个元素,则返回 true。
        boolean hasPrevious()      如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
        E next()     返回列表中的下一个元素。
        int nextIndex()     返回对 next 的后续调用所返回元素的索引。
        E previous()     返回列表中的前一个元素。
        int previousIndex()      返回对 previous 的后续调用所返回元素的索引。
        void remove()     从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。
        void set(E e)     用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。



改删增的顺序不能错:
                void set(E e)用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。只有在最后一次调用 next 或 previous 后既没有        调用 ListIterator.remove 也没有调用 ListIterator.add 时才可以进行该调用。

                void remove()从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。对于每个 next 或 previous 调用,只能执行一次        此调用。只有在最后一次调用 next 或 previous 之后,尚未调用 ListIterator.add 时才可以执行该调用。

                void add(E e)将指定的元素插入列表(可选操作)。该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous         返回的下一个元素之后(如果有);如果列表没有元素,那么新元素就成为列表中的唯一元素。新元素被插入到隐式光标前:不影响对         next 的后续调用,并且对 previous 的后续调用会返回此新元素(此调用把调用 nextIndex 或 previousIndex 所返回的值增加 1)。

==================ListIterator的删除练习====================

                // 正向迭代时可有可无int参数,确定指针位置,默认的是从开头便利,也可以从任意位置。
                ListIterator<String> lit = arr.listIterator();
                while (lit.hasNext())
                        System.out.println(lit.next());
               
                // 逆向迭代时传入int参数,确定指针位置,可以从末尾,也可以从任意位置。
                ListIterator<String> lit = arr.listIterator(arr.size());
                while (lit.hasPrevious()) {
                        System.out.println(lit.previous());
                }
               
               
        //固定顺序 先修改,再删除,最后添加。
                ListIterator<String> lit = arr.listIterator(3);
                while (lit.hasNext()) {
                        lit.next();
                        lit.set("hh");        //对每次获取一个数据可以多次改写,最后一次有效
                        lit.set("hh");
                        lit.remove();                ///对每次获取一个数据只可以做一次删除
                        lit.add("ff");        //对每次获取一个数据可以进行多次添加,顺序添加在当前元素后面
                        lit.add("gg");
                }





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马