zoukankan      html  css  js  c++  java
  • 支持foreach迭代访问的自定义集合类

    import java.util.Iterator;  
      
    //测试类  
    public class Exec {  
        public static void main(String[] args) throws Exception {  
            // 创建学生集合类  
            Students students = new Students(10);  
      
            // 通过for each语句迭代循环学生集合类的每个元素  
            for (Object obj : students) {  
                Student stu = (Student) obj;  
                System.out.println(stu.getSid() + ":" + stu.getName());  
            }  
        }  
    }  
      
    // 支持for each迭代循环的学生集合类  
    class Students implements Iterable {  
        // 存储所有学生类的数组  
        private Student[] stus;  
      
        // 该构造函数可以生成指定大小的学生类变量数组,并初始化该学生类变量数组  
        public Students(int size) {  
            stus = new Student[size];  
            for (int i = 0; i < size; i++) {  
                stus[i] = new Student(String.valueOf(i), "学生" + String.valueOf(i));  
            }  
        }  
      
        // 实现Iterable接口的重要方法,返回自定义的迭代类变量  
        public Iterator iterator() {  
            return new StudentIterator();  
        }  
      
        // 实现Iterator接口的私有内部类,外界无法直接访问  
        private class StudentIterator implements Iterator {  
            // 当前迭代元素的下标  
            private int index = 0;  
      
            // 判断是否还有下一个元素,如果迭代到最后一个元素就返回false  
            public boolean hasNext() {  
                return index != stus.length;  
            }  
      
            // 返回当前元素数据,并递增下标  
            public Object next() {  
                return stus[index++];  
            }  
      
            // 这里不支持,抛出不支持操作异常  
            public void remove() {  
                throw new UnsupportedOperationException();  
            }  
        }  
    }  
      
    // 学生类  
    class Student {  
        // 学生学号  
        private String sid;  
      
        // 学生姓名  
        private String name;  
      
        // 默认构造函数  
        public Student() {  
        }  
      
        // 支持属性值初始化的构造函数  
        public Student(String sid, String name) {  
            setSid(sid);  
            setName(name);  
        }  
      
        // 学生学号的读取函数  
        public String getSid() {  
            return sid;  
        }  
      
        // 学生学号的设置函数  
        public void setSid(String sid) {  
            this.sid = sid;  
        }  
      
        // 学生姓名的读取函数  
        public String getName() {  
            return name;  
        }  
      
        // 学生姓名的设置函数  
        public void setName(String name) {  
            this.name = name;  
        }  
      
        // 格式化字符信息输出  
        public String toString() {  
            return this.sid + ":" + this.name;  
        }  
    }  
    

    ==============================================================================

    本博客已经废弃,不在维护。新博客地址:http://wenchao.ren


    我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
    们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
    实我是一个程序员

    ==============================================================================
  • 相关阅读:
    一句话解释各种虚拟币的用途
    php 网站301重定向设置代码实战案例
    seo网页加速技术,预加载 DNS Prefetching 详解
    AI赌神称霸德扑的秘密,刚刚被《科学》“曝光”了
    java实现 HTTP/HTTPS请求绕过证书检测代码实现
    pyspider源码解读--调度器scheduler.py
    pyspider操作千万级库,pyspider在对接量级较大库的策略
    尼克《人工智能简史》谈人工智能的历史、现实与未来
    CentOS7使用yum命令安装Java1.8
    php ci nginx 伪静态rewrite配置方法
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2070577.html
Copyright © 2011-2022 走看看