• 支持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


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

    ==============================================================================
  • 相关阅读:
    Linux 下IOport编程訪问
    Xcode下执行HelloWorld
    PHP/HTML混写的四种方式总结
    php取两位小数的几种方法
    使用原生JS+CSS或HTML5实现简单的进度条和滑动条效果(精问)
    js进阶 9-7 自动计算商品价值
    html5--1.12表格详解
    html5常用标签table表格布局
    html常用属性border-radius、linear-gradient怎么使用
    类选择器选择非唯一属性无法精确取值的问题
  • 原文地址:https://www.cnblogs.com/rollenholt/p/2070577.html
Copyright © 2020-2023  润新知