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

苹果cms网站建设成人技术培训学校

苹果cms网站建设,成人技术培训学校,怎做直销网站,日本真人做黄视频网站目录 前言 1、Java中的数组 2、实现动态数组 2.1、基本类结构设计 2.2、添加元素 2.3、查询&修改元素 2.4、包含&搜索&删除 2.5、数组扩容 前言 今天我们来学习一下关于数据结构的一些基础知识,数据结构研究的是数据如何在计算机中进行组织和存…

目录

前言

1、Java中的数组

2、实现动态数组

2.1、基本类结构设计

2.2、添加元素

2.3、查询&修改元素

2.4、包含&搜索&删除

2.5、数组扩容


前言

今天我们来学习一下关于数据结构的一些基础知识,数据结构研究的是数据如何在计算机中进行组织和存储,使得我们可以更高效的获取数据或者修改数据,那么首先我们要说的就是数组。

1、Java中的数组

数组就是把数据放成一排进行存放

通过一段代码来回忆一下数组的具体使用吧:

数组最大的优点就是:快速查询(比如ages[2])。

思考:数组的大小在创建的时候就已经固定了,那么如果我们往数组里添加的元素个数超过了数组的最大容量时,该怎么办呢?

2、实现动态数组

基于上面的思考,我们就来基于Java为我们提供的数组,一步一步的实现一个动态数组,可以满足增删改查的需求,并且当元素个数超过数组容量时,可以自动扩容。

2.1、基本类结构设计

public class Array {private int[] data;private int size;/*** 构造函数,传入的是数组的容量** @param capacity 容量*/public Array(int capacity) {data = new int[capacity];size = 0;}// 无参构造,默认容量为10public Array() {this(10);}// 获取数组中的元素个数public int getSize() {return size;}// 获取数组的容量public int getCapacity() {return data.length;}//判断数组是否为空public boolean isEmpty() {return size == 0;}
}

2.2、添加元素

思想:向数组末尾添加元素

2.3、查询&修改元素

2.4、包含&搜索&删除

经过上面这些步骤,数组中的相关方法都已经添加好了,最后我们再把这个Array类修改为泛型类Array<Element>,让它可以添加各种数据类型的元素,这里我就不再一一修改了,后面会附上完整的代码。

接下来我们来简单测试一下我们的Array类是否可用:

执行结果如下:

2.5、数组扩容

对于扩容也很简单,就是当数组中的容量不够存储时,重新创建一个更大容量的数组,然后将原数组的数据一一更新到新数组中,当然,具体扩容成多少就由开发者自行决定了,下面来看代码:

然后我们来实际测试一下是否扩容成功:

从执行的结果中可以很明显的看出,我们的动态数组已经成功实现了扩容:

最后附上完整的Array.java类的源码吧:

public class Array<E> {private E[] data;private int size;/*** 构造函数,传入的是数组的容量** @param capacity 容量*/public Array(int capacity) {data = (E[]) new Object[capacity];size = 0;}// 无参构造,默认容量为10public Array() {this(10);}// 获取数组中的元素个数public int getSize() {return size;}// 获取数组的容量public int getCapacity() {return data.length;}//判断数组是否为空public boolean isEmpty() {return size == 0;}// 向所有元素后添加一个新元素public void addLast(E e) {add(size, e);}// 向所有元素前添加一个新元素public void addFirst(E e) {add(0, e);}// 向第index位置插入一个新元素public void add(int index, E e) {if (index < 0 || index > size) {throw new IllegalArgumentException("数组下标异常");}if (size == data.length) {resize(2 * data.length);}for (int i = size - 1; i >= index; i--) {data[i + 1] = data[i];}data[index] = e;size++;}// 容量不够时进行扩容private void resize(int newCapacity) {E[] newdata = (E[]) new Object[newCapacity];for (int i = 0; i < size; i++) {newdata[i] = data[i];}data = newdata;}// 获取index索引位置的元素public E get(int index) {if (index < 0 || index >= size) {throw new IllegalArgumentException("数组下标异常");}return data[index];}//修改index索引位置的元素public void set(int index, E e) {if (index < 0 || index >= size) {throw new IllegalArgumentException("数组下标异常");}data[index] = e;}// 查找数组中是否有元素epublic boolean contains(E e) {for (int i = 0; i < size; i++) {if (data[i].equals(e)) {return true;}}return false;}// 查找数组中元素e所在的索引,如果没有则返回-1public int findIndex(E e) {for (int i = 0; i < size; i++) {if (data[i].equals(e)) {return i;}}return -1;}// 从数组中删除index位置的元素,并且返回删除的元素public E remove(int index) {if (index < 0 || index >= size) {throw new IllegalArgumentException("数组下标异常");}E ret = data[index];for (int i = index + 1; i < size; i++) {data[i - 1] = data[i];}size--;if (size == data.length / 4 && data.length / 2 != 0) {resize(data.length / 2);}return ret;}// 从数组中删除第一个元素public E removeFirst() {return remove(0);}// 从数组中删除最后一个元素public E removeLast() {return remove(size - 1);}// 从数组中删除元素epublic void removeElement(E e) {int index = findIndex(e);if (index != -1) {remove(index);}}@Overridepublic String toString() {StringBuilder res = new StringBuilder();res.append(String.format("Array:size=%d,capacity=%d\n", size, data.length)).append("[");for (int i = 0; i < size; i++) {res.append(data[i]);if (i != size - 1) {res.append(",");}}res.append("]");return res.toString();}
}

 OK,关于动态数组的相关内容就说这么多吧,下期再会!

祝:工作顺利!

http://www.tj-hxxt.cn/news/100553.html

相关文章:

  • 做php网站的书服装品牌营销策划方案
  • 共享网站哪里建网站网络营销推广
  • 通辽做网站有没有谷歌搜索入口中文
  • 济南传承网站建设公司搜索图片
  • 去除wordpress主题底部信息seo基础教程
  • 新闻网站建设毕业设计长沙seo步骤
  • 网站语音转写怎么做宁波网站推广优化哪家正规
  • 怎么做阿里国际网站的数据分析百度霸屏全网推广
  • 品牌建设网站公司排名今晚日本比分预测
  • 网站建设 网站制作 网站设计市场调研报告ppt
  • 江山建设工程信息网站引流客户的最快方法是什么
  • 在线制作图片的网站沈阳网站关键字优化
  • 山东新增5个高风险地区seo查询软件
  • 接单做网站的网络舆情分析
  • 综合b2b的代表网站有哪些求职seo
  • 外贸网站免费建设张家界seo
  • 龙岗网站建设 信科网络百度推广登陆后台
  • 美国做科普的网站可口可乐网络营销案例
  • 武汉大型网站开发淘宝seo排名优化软件
  • 晋州住房保障建设局网站电商如何从零做起
  • 常见的网站布局结构网站建设苏州
  • 蘑菇街的网站建设品牌营销策划十大要点
  • 济南网站建设公司排名国际新闻最新消息美国
  • 威县做网站哪儿便宜推广怎么做
  • 请问大连谁家做网站如何用手机创建网站
  • 网站建设SEO优化营口建网站的公司
  • 网站建设这个工作怎么样目前最新的营销模式有哪些
  • 高端集团官方网站建设公司攀枝花网站seo
  • 福田网站建设哪家好如何使用网络营销策略
  • 广州做贷款有什么网站aso是什么意思