编写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磁盘分区(二)之挂载卸载常用命令
Linux磁盘分区(二)之挂载卸载常用命令 转自:https://blog.csdn.net/qq_36183935/article/details/81053383 https: ...
- Linux学习 - 修改、查询文件内容
一.显示文件内容 cat [-n] [文件名] 正向显示 -n 显示行号 tac [文件名] 反向显示 more [文件名] 可实现分页显示 (空格)或(f) 翻页 (Enter) 换行 (q ...
- [项目总结]怎么获取TextView行数,为什么TextView获取行数为0?
1 final TextView textView = new TextView(this); 2 ViewTreeObserver viewTreeObserver = textView.getVi ...
- Vue API 3 (模板语法 ,指令)
条件 v-if v-if 指令用于条件性地渲染一块内容.这块内容只会在指令的表达式返回 truthy 值的时候被渲染. v-show v-show 指令也是用于根据条件展示一块内容.v-show 只是 ...
- Mybatis-运行原理
一.mybatis分层图 二.运行流程 根据全局配置文件创建sqlSessionFactory对象 根据全局配置文件的io流来构建SqlSessionFactoryBuilder对象: 解析(XmlC ...
- Linux磁盘与文件系统原理
这一章主要是原理性的,介绍了Linux文件系统的运作原理.涉及到很多计算机组成和操作系统的原理性知识,这部分知识很多都忘了,在这里复习下. 我们只看本章第1,2节.--------------- ...
- Oracle bulk collect into 的几种用法
bulk collect 和 forall 联合应用写起来显得有些啰嗦,不过为了速度,多写两句又何妨 建立两个临时表 create table T_TEST ( TESTID NUMBER(19) n ...
- Spring Cloud Eureka源码分析之三级缓存的设计原理及源码分析
Eureka Server 为了提供响应效率,提供了两层的缓存结构,将 Eureka Client 所需要的注册信息,直接存储在缓存结构中,实现原理如下图所示. 第一层缓存:readOnlyCache ...
- Table.AlternateRows删除间隔….Alternate…(Power Query 之 M 语言)
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...
- MAVEN基础讲解
MAVEN解决的问题 1.当我们开始一个工程的时候往往需要几十甚至上百个jar包,如果没有一个管理工具的话,结果就是每个都需要自己手动导入工程目录,并且还有可能发生jar包冲突,版本冲突等问题 2.在 ...