仿照Iterator写的一个迭代器

本文介绍了一种用于课程查询的迭代器设计方法,通过定义接口及其实现类,可以方便地进行课程的前后切换查询。该迭代器适用于课程列表等应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本迭代器用于课程的查询

  • 1.首先定义一个接口,定义所有功能
package cn.hdeasy_01;
public interface ICourseIterator {
    void next();//进入下一个课程操作
    void previous();//进入前一课程操作
    boolean isFrist();//判断是否已经是第一个课程
    boolean isLast();//判断是否为最后一门课程
    String getNextCourseName();//获取下一门课程的名称
    String getPreviousCourseName();//获取前一门课的名称
}
  • 2.再定义课程的集合
package cn.hdeasy_01;

public abstract class CourseList {
    private String[]courseName;

    public CourseList(String[]courseName){
        this.courseName=courseName;
    }

    public String[] getCourseName(){
        return courseName;
    }
    //封装内部类实现接口,封装所有功能
    private class MyCourseIterator implements ICourseIterator {
        private String[] coursorName;
        private int fristIndex;
        private int lastIndex;
        //构造方法
        public MyCourseIterator(CourseList list) {
            this.coursorName=list.getCourseName();
            fristIndex=-1;
            lastIndex=coursorName.length;
        }
        @Override
        public void next() {
            if(fristIndex<coursorName.length){
                fristIndex++;
            }
        }
        public void previous() {
            if(lastIndex>-1){
                lastIndex--;
            }
        }
        @Override
        public boolean isFrist() {
            return lastIndex==-1;
        }
        @Override
        public boolean isLast() {
            return fristIndex==coursorName.length;
        }
        @Override
        public String getNextCourseName() {
            return courseName[fristIndex];
        }
        @Override
        public String getPreviousCourseName() {
            return courseName[lastIndex];
        }

    }
    public  MyCourseIterator getIterator(){
        return new MyCourseIterator(this);
    };
}
  • 3.接下来定义一个个人的课程集合

package cn.hdeasy_01;

public class MyList extends CourseList {

    public MyList(String[] courseName) {
        super(courseName);
    }   
}
  • 4.最后就可以写一个使用本迭代器的小Demo

package cn.hdeasy_01;

public class IteratorDemos {

    public static void main(String[] args) {
        String[]cousers=new String[]{"语文","数学","英语","物理","化学"};
        CourseList courseList;
        ICourseIterator iterator;
        MyList list=new MyList(cousers);
        iterator=list.getIterator();
        while(!iterator.isLast()){

            iterator.next();
            String nextCourseName = iterator.getNextCourseName();
            System.out.println(nextCourseName);         
        }
        while(!iterator.isFrist()){
        iterator.previous();
            String previousCourseName = iterator.getPreviousCourseName();
            System.out.println(previousCourseName);         
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值