返回本章节

返回作业目录


需求说明:

  • 设计一个类似于ArrayList的集合类ListArray。
  • ListArray类模拟实现动态数组,在该类定义一个方法用于实现元素的添加功能,以及用于获取ListArray动态数组中所有元素的总个数。
  • 在ListArray类中定义一个用于迭代动态数组所有元素的方法。

实现思路:

定义迭代接口Foreach,在该接口中定义两个方法,分别是判断迭代器中是否还有下一个元素的方法,以及获取迭代器中下一个元素的next()方法。

public interface  Foreach {
//判断迭代器中是否还有元素
public boolean hasNext();
//获取迭代器中的下一个元素
public Object next();
}

创建自定义模拟实现动态数组的集合类ListArry,在该类中定义int类型属性capacity,表示该类中封装的动态数组的容量。

在ListArray类中定义Object[]类型属性data,该属性用于保存添加到ListArray类中的元素。

在ListArray类中定义int类型属性index,该属性作为计数器,既可以表示当前数组已经添加到第几个元素,又可以表示当前ListArray存储元素的总个数。

ListArray类中定义一个带有int类型形参的构造方法,在构造方法中实现对data数组的初始化。

在ListArray类中定义addElement(Object ele)方法,该方法用于实现数据的添加功能。

在添加元素每次调用adeElement()方法时,index计数器需要自增1,当index的值大于等于data数组的容量时,需要重新创建一个原数组长度2加1大小的新数组的实例,并将该实例赋值于data变量。在此过程中,还需要将老数组的数组保存于新数组对应下标位置的元素中。

public  void addElement(Object ele){
if(data.length>=this.capacity){
this.capacity=this.capacity*2+1;
Object[] oldData=data;
data=new Object[this.capacity];
for(int i=0;i<oldData.length;i++){
data[i]=oldData[i];
}
}
data[index++]=ele;
}

在ListArray类中定义size()方法,该方法返回当前ListArray集合中保存元素的总个数。

在ListArray类中,定义返回Foreach接口实例的foreacher()方法。

public  Foreach  forecher(){
return new ListArrayForeach();
}

在ListArray类中创建私有内部类ListArrayForeach,该类实现Foreach接口,通过该类实现对ListArry集合类的迭代输出的功能。

private class ListArrayForeach implements Foreach{
private int counter;//计数器
public boolean hasNext() {
return counter<index?true:false;
}
public Object next() {
if(counter<index)
return data[counter++];
else
throw new RuntimeException("No Such Element Exception");
}
}

实现代码:

编写Java程序,定义一个类似于ArrayList集合类的更多相关文章

  1. Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。

    返回本章节 返回作业目录 需求说明: 编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字. 实现思路: 定义方法findNums(),用于实现查找所有能够整除指定数 ...

  2. Java初学者作业——编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级。定义方法实现学生成绩的评测功能。

    返回本章节 返回作业目录 需求说明: 编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级.要求:定义方法实现学生成绩的评测功能. 学生的英语考试成绩进行评测,评测规 ...

  3. Java初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。

    返回本章节 返回作业目录 需求说明: 编写 Java 程序,定义 Java 类 Point 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台. 实现思路: 定义 P ...

  4. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  5. Java初学者作业——编写Java程序,输入一个数字,实现该数字阶乘的计算。

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个数字,实现该数字阶乘的计算.一个数字的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n! .例如,5的阶乘等于1*2*3*4* ...

  6. Java初学者作业——编写 Java 程序,定义 Employee 类以及 HR 类,实现 HR 为 Employee 加薪的功能。

    返回本章节 返回作业目录 需求说明: 编写 Java 程序,定义 Employee 类以及 HR 类,实现 HR 为 Employee 加薪的功能. 实现思路: 定义 Employee 类,并定义属性 ...

  7. Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...

  8. Java初学者作业——编写JAVA程序,计算跳水运动员本次动作的最终得分。

    返回本章节 返回作业目录 需求说明: 编写JAVA程序,计算跳水运动员本次动作的最终得分. 规则如下: 在跳水比赛中,共有六位裁判对运动员所完成的动作进行评分,每位裁判的评分在0-10之间,运动员最终 ...

  9. 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。

    查看本章节 查看作业目录 需求说明: 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book).一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户, ...

随机推荐

  1. linux安装redis报错

    问题:You need tcl 8.5 or newer in order to run the Redis test 解决办法: wget http://downloads.sourceforge. ...

  2. Lock锁的使用

    在Java多线程中,可以使用synchronized关键字实现线程之间的同步互斥,在jdk1.5后新增的ReentrantLock类同样可达到此效果,且在使用上比synchronized更加灵活. 观 ...

  3. 解决ViewPager与ScrollView 冲突

    ViewPager来实现左右滑动切换tab,如果tab的某一项中嵌入了水平可滑动的View就会让你有些不爽,比如想滑动tab项中的可水平滑动的控件,却导致tab切换. 因为Android事件机制是从父 ...

  4. 【编程思想】【设计模式】【行为模式Behavioral】访问者模式Visitor

    Python版 https://github.com/faif/python-patterns/blob/master/behavioral/visitor.py #!/usr/bin/env pyt ...

  5. 类型类 && .class 与 .getClass() 的区别

    一. 什么是类型类 Java 中的每一个类(.java 文件)被编译成 .class 文件的时候,Java虚拟机(JVM)会为这个类生成一个类对象(我们姑且认为就是 .class 文件),这个对象包含 ...

  6. 基于Kubernetes的hpa实现pod实例数量的自动伸缩

    Pod 是在 Kubernetes 体系中,承载用户业务负载的一种资源.Pod 们运行的好坏,是用户们最为关心的事情.在业务流量高峰时,手动快速扩展 Pod 的实例数量,算是玩转 Kubernetes ...

  7. podman wsl2在windows重启后出错

    1. error joining network namespace for container 如果没有先停止容器就重启windows,极大概率就会出现这个问题 解决方法 先停止停止的容器再启动已退 ...

  8. 为什么使用卡尔曼滤波器?(Youtube视频学习)

    视频资料网址:https://www.youtube.com/watch?v=mwn8xhgNpFY&list=RDCMUCgdHSFcXvkN6O3NXvif0-pA&index=4 ...

  9. [BUUCTF]PWN——铁人三项(第五赛区)_2018_rop

    铁人三项(第五赛区)_2018_rop[32位libc泄露] 题目附件 解题步骤: 例行检查,32位,开启了NX保护 试运行一下程序,一开始让我们输入,然后直接输出"Hellow,world ...

  10. spring security oauth2搭建resource-server demo及token改造成JWT令牌

    我们在上文讲了如何在spring security的环境中搭建基于oauth2协议的认证中心demo:https://www.cnblogs.com/process-h/p/15688971.html ...