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

网站建设好评语上海嘉定区网站建设公司

网站建设好评语,上海嘉定区网站建设公司,自助建站的平台,自己安装wordpress概述 实现 package com.lovehena.datastructure;import lombok.extern.slf4j.Slf4j;/* * java实现一个动态数组 * 实际上,java.util.ArrayList这个类就是一个动态数组的类 * 和静态数组最大的不同就是,java.util.ArrayList中的元素个数是…

概述

概述

实现

package com.lovehena.datastructure;import lombok.extern.slf4j.Slf4j;/*
*   java实现一个动态数组
*       实际上,java.util.ArrayList这个类就是一个动态数组的类
*       和静态数组最大的不同就是,java.util.ArrayList中的元素个数是可以变化的。
*
*   一个动态数组中至少要有3个属性:
*       1.size 动态数组中已有元素的个数
*       2.capacity 动态数组中最大的元素个数
*       3.arr 虽然我们要实现的是一个动态数组,但还是需要一个静态数组用于存储元素,当静态数组无法容纳更多元素时动态扩容,于是,动态数组就实现了
*
*   先实现以下3个方法:
*       1.add(int index,int element) 往数组中指定索引处添加元素
*       2.addLast(int element) 将欲添加的元素添加到数组最后面
*       3.print() 数组的遍历
* */
@Slf4j
public class MyArrayList {private int size = 0; // 动态数组中已手动添加的元素的个数 初始时一个手动添加的元素也没有private int capacity = 10; // 动态数组中最大的元素个数 默认为10 java.util.ArrayList的默认初始容量也是10// 初始化一个静态数组 用于存储元素// 数组中的元素类型默认都是整数 如果需要存储其他类型 可以利用泛型机制实现// 实际上 int[] arr=new int[capacity] 这行代码执行完时 arr中已经有10个元素了 并且每个元素的值都是0private int[] arr = new int[capacity];/*** 往数组中指定索引处添加元素*  思路:*      已有数组*    元素  1 2 3 4 5*    索引  0 1 2 3 4**      现在要往索引为2的位置添加一个元素100,则 3 4 5这3( 3 = size - index )个元素都要往后移动1位,将索引为2的位置空出来,再将目标元素插入在索引2处即可*      保证占用的内存空间是连续的* @param index 目标索引* @param element 目标元素*/public void add(int index, int element) {if (index < 0 || index >= capacity) { // index最大值为capacity-1 最小值为0log.error("索引:{} 不正确", index);return;}// 利用System.arraycopy完成数组中元素的移动 api不熟悉的话可以点进源码阅读下注释// destPos的最大值为index(而不是index+1 java api设计中大多都是含头不含尾)System.arraycopy(arr, index, arr, index + 1, size - index);arr[index] = element;size++; // 已手动添加的元素的个数+1 这个size其实类似于实现链表时的头节点(头指针)}/**   1 2 3 4 5 6 7 8 9 10*   0 1 2 3 4 5 6 7 8 9** *//***  将欲添加的元素添加到数组最后面*      思路:*        已有数组*      元素  1 2 3 4 5*      索引  0 1 2 3 4**      现在要将6插入到数组的最后面,即插入到索引为5( size = 5)的位置,所以调用add传入index为size即可**      实际上 很多代码的书写都是先总结规律 再写出来的* @param element 欲添加的元素*/public void addLast(int element){// 直接调用add方法即可add(size,element);}/***  数组遍历*/public void print(){/*为什么不是这么写?for (int i = 0; i < arr.length; i++) {}因为 数组中真正添加了几个元素是由size表示的 我们遍历时需要的是我们手动添加的元素而不是数组初始化时默认初始化的为0的元素*/StringBuilder sb = new StringBuilder();for (int i = 0; i < size; i++) {sb.append(arr[i]).append(" ");}log.info("遍历数组 数组为:{}\n",sb.toString());}//todo 扩展:数组遍历的逻辑由调用者自定义,而不是直接写死在print()中,如何实现?//todo 扩展:以上的代码和动态数组(动态扩容)还没关系,感兴趣的朋友可以自己先实现下。
}

测试用例

@Slf4j
public class TestMyArrayList {public static void main(String[] args) {MyArrayList list = new MyArrayList();list.add(0,1);list.add(1,2);list.add(2,3);list.print();list.addLast(4);list.print();}
}

测试用例输出

测试用例输出

扩展

数组遍历的逻辑由调用者自定义,而不是直接写死在print()中,如何实现?

以上的代码和动态数组(动态扩容)还没关系,感兴趣的朋友可以自己先实现下。

最后

好了,如果对你有帮助的话,欢迎点个免费的赞哦。

http://www.dtcms.com/a/488990.html

相关文章:

  • 网站后台修改的页面不能显示头条网站怎么做的
  • wordpress网站更换空间商务网站内容建设包括
  • 深圳网站建设大全网站建设的公司这个
  • 主题网站设计与制作邢台网站制作公司
  • 重庆发布公众号seo优化是啥
  • wordpress站点名称的影响如何保存网站上的图片不显示图片
  • 网站特效怎么做的东莞网页设计与建设
  • 织梦网站如何做优化网站推广报告
  • 万基城市建设有限公司网站做营销网站那个好
  • 星Day-33 基础补充、建立简单神经网络
  • 自己个人网站后台怎么做白城北京网站建设
  • 网站设计素材网站上海龙元建设网站
  • .net 企业网站源码下载网站开发详细流程
  • wordpress建站有什么好处北京国税局网站做票种核定时
  • 做网站用的编程工具免费h5响应式网站搭建
  • 企业官网网站建设免费家具网站建设公司
  • 学校网站建设工作内容信用平台网站建设建议
  • 衡水自助建站系统python如何做自己的网站
  • 2017做网站怎么赚钱婚纱摄影网站
  • 网站后缀cc女人能做网站开发吗
  • 公司网站素材网站建设 微盘下载
  • 工程建设信息网站资质公告微官网和微网站首页
  • 学校网站结构图云服务器安装win系统做网站
  • 面签拍照 网站备案网站开发部门结构
  • 网站设计步骤及注意事项资阳住房和城乡建设厅官方网站
  • 郑州市网站建设怎么样哪个网站可以做店招
  • 宁波做网站优化多少钱搜索引擎下载入口
  • 上海建网站计划网站建设商城
  • 手机网站建设找哪家怎么自己做网站盗qq
  • 开发个网站需要多少钱建设积分商城网站