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


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

    ==============================================================================
  • 相关阅读:
    Emote木马分析
    CentOS7安装部署MongoDB
    CentOS7搭建FastDFS文件管理服务器
    CentOS7搭建FTP服务器
    20179301《网络攻防实践》第九周作业
    20179301《网络攻防实践》第七周作业
    20179301 段晓庆 《网络攻防》第六周总结
    20179301 《网络攻防技术》第四周总结
    20179301 段晓庆 《网络攻防》第三周总结
    2017-2018-2 20179301《网络攻防技术》第一周作业
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2070577.html
Copyright © 2011-2022 走看看