当前位置: 首页 > news >正文

网站开发网页重庆建设工程安全协会网站

网站开发网页,重庆建设工程安全协会网站,预付做网站订金怎么做账,深圳黑马程序员培训机构地址1、自定义MyArrayList类 该类里面基本有两个属性#xff0c;一个是用来存放数据的数组#xff0c;另外一个是用来描述已经存放数据的数量。同时设置arraylist表的默认长度为10#xff1b;代码如下#xff1a; public class MyArrayList {private int[] elem;private int u…1、自定义MyArrayList类 该类里面基本有两个属性一个是用来存放数据的数组另外一个是用来描述已经存放数据的数量。同时设置arraylist表的默认长度为10代码如下 public class MyArrayList {private int[] elem;private int usedSize;//表示表的实际占用空间//顺序表的默认大小public static final int DEFAULT_SIZE 10;public MyArrayList(int[] elem) {elem new int[DEFAULT_SIZE];} }2. 创建接口 我们创建一个接口要将arraylist要实现的抽象方法列出来使得后期直接在自定义类里面能够具体化 public interface IList {//新增元素,默认在数组最后新增public void add(int data);// 在 pos 位置新增元素public void add(int pos, int data);// 判定是否包含某个元素public boolean contains(int toFind) ;// 查找某个元素对应的位置public int indexOf(int toFind);// 获取 pos 位置的元素public int get(int pos);// 给 pos 位置的元素设为 value 更新public void set(int pos, int value);//删除第一次出现的关键字keypublic void remove(int toRemove) ;// 获取顺序表长度public int size();// 清空顺序表public void clear() ;// 打印顺序表注意该方法并不是顺序表中的方法为了方便看测试结果给出的public void display();boolean isFull();public boolean isEmpty(); } 同时我们的自定义类实现该接口并实现接口中的方法我们接下来通过自己手敲arraylist的一些方法来从底层深入的学习arraylist表如何完成一系列的方法实现方便我们了解arraylist表的运行逻辑和优缺点 3、实现具体方法 3.1 打印顺序表 只要知道当前类对象的实际长度即可完成打印顺序表操作 Overridepublic void display() {for (int i 0; i this.usedSize-1; i) {System.out.print(this.elem[i]-);}System.out.println();} 3.2新增元素  我们此处的方法默认添加的每一个元素是从底层数组末尾依次添加的 思路 1、 首先需要确定当前存储在数组中最后一位数据的索引即usedSize-1然后下一个存储空间范围合法的话直接将我们要添加的数据放到接下来的数组索引上即可数据存放的索引应该为usedSized 1.1 这时候就要考虑如果我们要存放数据之前要判断数组的空间是否满了我们之前默认存储容量为10 1.2 如果判断出数组当前已满我们就要对数组存空容量进行扩容 2、添加完成后usedSize往后移一位 代码如下  Overridepublic void add(int data) {checkCapacity();//此时表示空间足够可以存放数据this.elem[this.usedSize] data;this.usedSize;}private void checkCapacity() {if (isFull()){//如果当前的数组已经满了我们就要扩容elem Arrays.copyOf(elem,elem.length*2);}}Overridepublic boolean isFull() {return usedSize elem.length;}测试及结果 public static void main(String[] args) {MyArrayList myArrayList new MyArrayList();myArrayList.add(2023);myArrayList.add(11);myArrayList.add(29);myArrayList.display();} 3.3 在 pos 位置新增元素  思路在pos下标添加data 1、应该把pos下标到usedSzie-1下标之间的元素往右面移动包含pos且得先从最右边的元素开始移动 1、1必须保证pos下标位置在0~usedSize范围之间即一个顺序表只有0下标有位置想要往3下标位置插入数据是不科学的 1.2 如果要在usedSize-1的位置插入数据我们要进行扩容操作 2、最后userSize 详细图解如下图所示 代码如下所示 public class PosIllegality extends RuntimeException{public PosIllegality(String msg){super(msg);} }Overridepublic void add(int pos, int data) {try {checkPosOnAdd(pos);}catch (PosIllegality e) {e.printStackTrace();return;}//必须保证pos下标位置在0~usedSize范围之间所以要检查checkCapacity();//1、从最后一个有效的数据开始往后移动// 2、当i pos 就结束for (int i usedSize-1; i pos; i--) {//下标为pos的也得搬家elem[i1] elem[i];}//3、存放元素到pos 位置elem[pos] data;//4、usedSize;usedSize;}checkCapacity();//1、从最后一个有效的数据开始往后移动 //2、当i pos 就结束for (int i usedSize-1; i pos; i--) {elem[i1] elem[i];}//3、存放元素到pos 位置elem[pos] data;//4、usedSize;usedSize;} 执行结果 eg1 public static void main(String[] args) {MyArrayList myArrayList new MyArrayList();myArrayList.add(2023);myArrayList.add(11);myArrayList.add(29);myArrayList.add(4,99);myArrayList.display();} eg2 public static void main(String[] args) {MyArrayList myArrayList new MyArrayList();myArrayList.add(2023);myArrayList.add(11);myArrayList.add(29);myArrayList.add(2,29);myArrayList.display();} 3.4判定是否包含某个元素 思路先遍历整个数组再判断是否包含 注意首先要判断列表是否为空 此处代码图解 Overridepublic boolean contains(int toFind) {if(isEmpty()) {return false;}for (int i 0; i usedSize; i) {//如果是查找引用数据类型 一定记住 重写方法if(elem[i] toFind) {return true;}}return false;}Overridepublic boolean isEmpty() {return usedSize 0;} 3.5 查找某个元素对应的位置  找到列表中的钙元素返回其在列表中的索引 思路 1、如果列表为空则返回-1 2、遍历数组找到返回索引找不到返回-1 下图为方法代码和运行结果 Overridepublic int indexOf(int toFind) {if (isEmpty()){return -1;}for (int i 0; i usedSize; i) {if (elem[i] toFind){return i;}}return -1;}public static void main(String[] args) {MyArrayList myArrayList new MyArrayList();myArrayList.add(2023);myArrayList.add(11);myArrayList.add(29);myArrayList.add(2,29);myArrayList.display();System.out.println(myArrayList.indexOf(2023));System.out.println(myArrayList.indexOf(2024));} 3.6 获取 pos 位置的元素 思路 1、检查pos是否合法当pos不合法时抛出异常停止下面的代码运行 2、检查书序表是否为空如果链表为空抛出异常停止下面的代码运行 3、除此外返回pos 位置的元素 下图为代码逻辑图 具体方法如下 public class MyArrayListEmpty extends RuntimeException{public MyArrayListEmpty(String msg){super(msg);} }Overridepublic int get(int pos) {checkPosOnGetAndSet(pos);if (isEmpty()){throw new MyArrayListEmpty(获取指定下标元素时 顺序表为空);}return elem[pos];} private void checkPosOnGetAndSet(int pos) {if (pos 0 || pos usedSize){System.out.println(这个pos不符合法);throw new PosIllegality(查找pos下标元素时发现pos异常: pos);}}执行代码及结果 public static void main(String[] args) {MyArrayList myArrayList new MyArrayList();myArrayList.add(2023);myArrayList.add(11);myArrayList.add(29);myArrayList.add(2,29);myArrayList.display();System.out.println(myArrayList.get(1));System.out.println(myArrayList.get(6));} 3.7 给 pos 位置的元素设为 value  代码如下 Overridepublic void set(int pos, int value) {checkPosOnGetAndSet(pos);elem[pos] value;} public static void main(String[] args) {MyArrayList myArrayList new MyArrayList();myArrayList.add(2023);myArrayList.add(11);myArrayList.add(29);myArrayList.add(2,29);myArrayList.display();myArrayList.set(1,2029);myArrayList.display();} 运行结果如图所示  3.8 删除第一次出现的关键字key  思路 1、先通过查找索引的方法寻找key在列表中的索引。如果没有找到停止运行 2、如果找到开始删除该元素自这个元素以后得所有元素往前移一个单位 3、删除成功后usedSize--                  Overridepublic void remove(int toRemove) {int index indexOf(toRemove);if(index -1) {System.out.println(没有这个数字);return;}for(int i index; i usedSize-1;i) {elem[i] elem[i1];}usedSize--;} 3.9 获取顺序表长度  Overridepublic int size() {return this.usedSize;} 3.10 清空顺序表  Overridepublic void clear() {this.usedSize 0;} ps:本次内容就到这里结束了喜欢的话还请大家一键三连哦
http://www.zqtcl.cn/news/281600/

相关文章:

  • 鄂州网站推广做区块链在哪个网站
  • 网站什么内容网站安全性设计
  • 免费动态域名申请seo发布网站
  • 软件毕设代做网站广告设计公司资质
  • 织梦网站模板如何安装网页设计教程心得体会
  • 网站开发 男生网站二维码怎么做的
  • net网站开发教程网站防御怎么做
  • 手机网站设计只选亿企邦哪个选项不属于网络营销的特点
  • 繁昌网站建设如何用易语言做网站
  • 电子商务网站建设财务分析建立网站方法
  • 大专学网站开发wordpress显示数据库请求
  • 诸暨网站制作设计公众号文章怎么导入到wordpress
  • 网站死链怎么办青岛网站制作企业
  • 已经有域名 怎么修改网站网站推广找客户
  • 网站的制作建站人增加网站流量
  • 向国旗致敬做时代新人网站广州网站建设公司排名
  • 阿里云域名怎么做网站对网站进行seo优化
  • 响应式网站建设合同11月将现新冠感染高峰
  • 做网站客户一般会问什么问题百度云网盘资源分享网站
  • 网站设计中超链接怎么做艺术设计
  • 卡盟网站建设wordpress优化代码
  • 做网站需要什么技术员商城型网站开发网站建设
  • discuz做地方门户网站网站大全免费完整版
  • 莆田人做的网站一天赚2000加微信
  • 阿里云网站访问不了怎么办做网站二维码
  • 手机商城网站建设可采用的基本方式有
  • 网站备案管理做广告公司网站建设价格
  • 绵阳专业网站建设公司上海外贸公司排名榜
  • 如何做英文系统下载网站快速排名工具免费
  • 苏州建网站必去苏州聚尚网络网页视频提取在线工具