编写Java程序,定义一个类似于ArrayList集合类
返回本章节
返回作业目录
需求说明:
- 设计一个类似于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集合类的更多相关文章
- Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。
返回本章节 返回作业目录 需求说明: 编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字. 实现思路: 定义方法findNums(),用于实现查找所有能够整除指定数 ...
- Java初学者作业——编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级。定义方法实现学生成绩的评测功能。
返回本章节 返回作业目录 需求说明: 编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级.要求:定义方法实现学生成绩的评测功能. 学生的英语考试成绩进行评测,评测规 ...
- Java初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。
返回本章节 返回作业目录 需求说明: 编写 Java 程序,定义 Java 类 Point 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台. 实现思路: 定义 P ...
- 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 ...
- Java初学者作业——编写Java程序,输入一个数字,实现该数字阶乘的计算。
返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个数字,实现该数字阶乘的计算.一个数字的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n! .例如,5的阶乘等于1*2*3*4* ...
- Java初学者作业——编写 Java 程序,定义 Employee 类以及 HR 类,实现 HR 为 Employee 加薪的功能。
返回本章节 返回作业目录 需求说明: 编写 Java 程序,定义 Employee 类以及 HR 类,实现 HR 为 Employee 加薪的功能. 实现思路: 定义 Employee 类,并定义属性 ...
- Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。
返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...
- Java初学者作业——编写JAVA程序,计算跳水运动员本次动作的最终得分。
返回本章节 返回作业目录 需求说明: 编写JAVA程序,计算跳水运动员本次动作的最终得分. 规则如下: 在跳水比赛中,共有六位裁判对运动员所完成的动作进行评分,每位裁判的评分在0-10之间,运动员最终 ...
- 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。
查看本章节 查看作业目录 需求说明: 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book).一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户, ...
随机推荐
- linux安装redis报错
问题:You need tcl 8.5 or newer in order to run the Redis test 解决办法: wget http://downloads.sourceforge. ...
- Lock锁的使用
在Java多线程中,可以使用synchronized关键字实现线程之间的同步互斥,在jdk1.5后新增的ReentrantLock类同样可达到此效果,且在使用上比synchronized更加灵活. 观 ...
- 解决ViewPager与ScrollView 冲突
ViewPager来实现左右滑动切换tab,如果tab的某一项中嵌入了水平可滑动的View就会让你有些不爽,比如想滑动tab项中的可水平滑动的控件,却导致tab切换. 因为Android事件机制是从父 ...
- 【编程思想】【设计模式】【行为模式Behavioral】访问者模式Visitor
Python版 https://github.com/faif/python-patterns/blob/master/behavioral/visitor.py #!/usr/bin/env pyt ...
- 类型类 && .class 与 .getClass() 的区别
一. 什么是类型类 Java 中的每一个类(.java 文件)被编译成 .class 文件的时候,Java虚拟机(JVM)会为这个类生成一个类对象(我们姑且认为就是 .class 文件),这个对象包含 ...
- 基于Kubernetes的hpa实现pod实例数量的自动伸缩
Pod 是在 Kubernetes 体系中,承载用户业务负载的一种资源.Pod 们运行的好坏,是用户们最为关心的事情.在业务流量高峰时,手动快速扩展 Pod 的实例数量,算是玩转 Kubernetes ...
- podman wsl2在windows重启后出错
1. error joining network namespace for container 如果没有先停止容器就重启windows,极大概率就会出现这个问题 解决方法 先停止停止的容器再启动已退 ...
- 为什么使用卡尔曼滤波器?(Youtube视频学习)
视频资料网址:https://www.youtube.com/watch?v=mwn8xhgNpFY&list=RDCMUCgdHSFcXvkN6O3NXvif0-pA&index=4 ...
- [BUUCTF]PWN——铁人三项(第五赛区)_2018_rop
铁人三项(第五赛区)_2018_rop[32位libc泄露] 题目附件 解题步骤: 例行检查,32位,开启了NX保护 试运行一下程序,一开始让我们输入,然后直接输出"Hellow,world ...
- spring security oauth2搭建resource-server demo及token改造成JWT令牌
我们在上文讲了如何在spring security的环境中搭建基于oauth2协议的认证中心demo:https://www.cnblogs.com/process-h/p/15688971.html ...