zoukankan      html  css  js  c++  java
  • 迭代器和增强型for循环

    ★迭代器:

     Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,比如ArrayList、LinkedList、HashSet...,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。

      因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作更为简单,Java引入了迭代器模式! 

      把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。

    public class CollectionDemo1 {
        public static void main(String[] args) {
            //集合中可以存任意类型
            Collection co = new ArrayList<>();
            co.add("a");
            co.add("sfadjkjksd");
            //迭代器   获取迭代器
            Iterator it = co.iterator();
            
            while(it.hasNext()){//判断是否存在下个元素
                String s = (String)it.next();//获取下个元素
                //System.out.println(s);
                System.out.println(s.length());
            }
        }
    }

    ★增强型for循环:

      1.增强型for循环使用起来比较方便,代码也比较简单,如果只是操作集合中元素的而不使用索引的话,建议用此方法。
    对于普通for循环,如果需要使用索引进行其它操作的话,建议用这个。

      2,特点:
        书写简洁:
      对集合进行遍历,只能获取集合元素,不能对集合进行操作,类似迭代器的简写形式,但是迭代器可以对元素进行remove操作(ListIterator可以进行增删改查的操作)。

      3,格式:
        for(数据类型变量名 :被遍历的集合(collection)或者数组) {
            执行语句
        }

    public class ForEach {
        public static void main(String[] args) {
            fun();
        }
        //for循环的弊端    有下标
        //增强for循环优点     代码少了   没有索引
        public static void fun(){
            int[] arr={12,5,689,45,23,69,87};
    //        for (int i = 0; i < arr.length; i++) {
    //            System.out.println(arr[i]);
    //        }
            for(int i: arr){
                System.out.println(i+1);//没有下标,不能对元素进行单个操作,整体加一
            }
            System.out.println(arr[0]);
        }
    }

     ★迭代器和增强型for循环的并发异常:

    /* 迭代器的并发异常   java.util.ConcurrentModificationException
     * 增强for循环     java.util.ConcurrentModificationException
    * 在遍历或者迭代过程中对集合进行增删 都会发生异常
    * */

    public class ListDemo {
        public static void main(String[] args) {
            List<String> s=new ArrayList<String>();
            s.add("欲问青天这人生有几何");
            s.add("这人生有几何");
            s.add("怕这去日苦多");
    //判断集合中是否有"这人生有几何",假如有,那么把"爱的故事上集"添加到集合中.
    /*//增强型for循环
            for(String i:s){
                if (i.equals("这人生有几何")) {
                    s.add("爱的故事上集");
                }
            }
            */
            /*迭代器
            Iterator<String> it=s.iterator();
            while (it.hasNext()) {
                String s1 = (String) it.next();
                if (s1.equals("这人生有几何")) {
                    s.add("爱的故事上集");
                System.out.println(s1);
            }
            } */
    //判断集合中是否有"这人生有几何",假如有,那么把"爱的故事上集"添加到集合中.
            for (int i = 0; i < s.size(); i++) {
                //System.out.println(s.get(i));
                    if((s.get(i)).equals("这人生有几何")){
                        s.add("爱的故事上集");
                    }
            }
            for (int i = 0; i < s.size(); i++) {
                System.out.println(s.get(i));
            }
      }
    }
  • 相关阅读:
    实验 7:OpenDaylight 实验——Python 中的 REST API 调用
    实验 6:OpenDaylight 实验——OpenDaylight 及 Postman实现流表下发
    实验 5:OpenFlow 协议分析和 OpenDaylight 安装
    实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令
    实验 3:Mininet 实验——测量路径的损耗率
    软件工程第一次作业——自我介绍
    实验 2:Mininet 实验——拓扑的命令脚本生成
    实验1、Mininet 源码安装和可视化拓扑工具
    第01组 Beta版本演示
    第01组 Beta冲刺(4/4)
  • 原文地址:https://www.cnblogs.com/duguangming/p/10572167.html
Copyright © 2011-2022 走看看