免费建站公司联系方式,公司起名免费网,网站程序找人做还是自己做,百度自己网站排名我们先来看一下#xff0c;不要着急啊大家不要着急#xff0c;这些东西我肯定会一点一点会给大家去实现#xff0c;最终实现到跟Java官方版本差不多#xff0c;只要我们自己实现了#xff0c;偶尔类似的#xff0c;你会发现你倒回去看Java官方的那个源码#xff0c;你会…我们先来看一下不要着急啊大家不要着急这些东西我肯定会一点一点会给大家去实现最终实现到跟Java官方版本差不多只要我们自己实现了偶尔类似的你会发现你倒回去看Java官方的那个源码你会发现特别简单跟我们写的几乎是一模一样啊。 然后我们看一下啊那这个东西怎么去设计呢首先一个动态数组的话它里面应该有哪些成员变量呢哪些成员变量呢我们来看一下怎么去设计。我认为动态数组我们这个呃类似的应该至少包含两个成员变量一个是size一个是size那成员变量肯定是弄成私有的size这个是元素的数量还有一个什么呢 还有一个是用了存放元素我叫做艾利曼斯那既然我是数组所以我这个艾利曼斯肯定是指向数组比如说我申请了一段连续的存储空间能够存放123456对吧 这6个元素假设一开始能存放6个元素所以我这个OMS应该会指向这个速度那将来我们通过什么呢我们通过这个爱的添加元素我们就会把这个元素放到这个位置放到这个位置一个一个往后面讲万一空间不够怎么办呢没关系因为我们这个叫动态数组将来肯定会对它进行扩容那怎么扩容 这个是后面的事情我们先保证能存放元素先啊所以我们这里面应该是有一个东西叫做应酬还有你们然后这个类型是个速度对吧是个速度所有的元素我们所有的元素都放这个地方对吧 那接下来呢我们再提供一个构造函数 or list好这个是一个构造函数那构造函数这样子你想想我刚刚说了一开始你看我们能存放6个元素但是很多时候别人可能自己来指定一开始能放多少个元素那这个事怎么办呢 所以我觉得可以让别人传一个卡帕斯提进来卡帕斯提就是容量你希望你这个速度一开始容量是多少 那这个时候我们完全该怎么样呢首先我们的艾利曼斯那比如说别人船的容量是10就意味着一开始我们要开辟10个容量给他对不对还有一个那别人也可能不传这个容量所以我提供一个无参的构造函数出来那无参的构造函数但是又是多少呢这样子假设我默认是10个默认是存放10个这样就解决了对吧 当然size默认一开始肯定是等于什么0的因为你里面没有存放任何东西所以元素数量肯定是0那这里写的不是很严谨那怎么做呢这样子像这个10我不建议写在这个地方我建议写成常量在Java里面如果你是弄一个私有的常量应该是privy study Guidefinal games来个before而且Java的这个编程规范里面如果是常量给我写成大写啪啪CT10就可以了。 Final是常量的意思相当于别的编程语言语言里面的costspeak是静态的意思啊静态就静态能保证什么静态能保证这个家伙的内存永远只有一份这个在c加加课程里面也讲过这个静态的作用啊。 然后我们看一下这里面应该写什么呢这个应该写这个然后这这里面呢这里面其实大家思考一下我们这个代码是不是呃可以啊我们这个代码的话是不是完全可以这样写 直接diss然后传一个capacity相当于就是我这个无参的构造函数去调用这个有参的构造函数注意构造函数之间相互调用是通过disc相当于将这个地方开发视频传给他了他调用这边啊这个我不多说这是Java语法问题那这里写的还不是很严谨为什么 一边传的这个东西可能是0可能是-10是吧也可能是这个负很多很多很多对吧那这个不严谨那怎么办呢那这个时候我们做一个判断f开发视频小于这样子我们直接这么做吧。只要它传到这个空间只要它传到这个空间是小于我这个默认的我都认为是是什么意思呢就是它传的太小了直接用我这个如果他比我这个大传的是11 12甚至是20那才用他的。 我就这样做这样呢就代表太小的东西太小这个数量我就不接受我用我这个10因为你想想如果他传的是一你一开始就按照他的做法去弄一的话对吧那这个很快就不够用了嘛很快就要扩容了那这样就比较麻烦所以我的做法就是呃我就给他默认就是10好吧如果你乐意的话你也可以用他的对吧 比如说你传的是小于0我就给你个1一开始从一开始那也可以随便你啊看你怎么去设计只不过我这里设计就弄成只要你什么呢只要你是小于我这个我就弄成10这是我自己的一个设计噢这里没有说标准的写法这个是根据你的情况而定你想怎么写就怎么写但是一定要做的是什么 一定要做的是对它进行一个判断啊如果它是小数如果是它是个负数如果是0你要怎么处理一定要写一个判断判断之后怎么处理这个是你自己的事情啊就这样写。 好同学们你想想那我们回到外面那别new a list是不是意味着就会调用这个然后把这个10把这个10传到这个地方所以到时候这里写的就是10相当于就是它另一个are list默认就是有10个元素的存储空间所以它的这个ed至少能加10次对不对 等我们快速把这个代码写一下吧那我们来看一下这个这个先看这个赛字那size很简单其实就返回我们成员变量size就是他调用我这个size调用我这个size这个方法我就返回我这个成员变量对吧因为这个成员变量就是用来干嘛用来存放用来保存我们当前元素的数量的然后这个时候再往下走is empty。 Empty什么意思啊判断一下是否为空那这个其实很简单size等于0其实就是空这样写。 其实很多有同学有同学可能看不懂这一句啊我我觉得真有可能啊。其实这一句等价是什么呢这其实就是等价于如果size等于0不是疼处对吧如果size是空那就代表sizesize如果等于0那代表确实是空嘛。如果size不等于0我就返回force代表不空对吧Size的不为零说明有东西嘛。 其实这个没必要这么写这样写比较好嘛那我们再看一下contents我们先不写然后我们先想这个这个其实怎么做的这个其实怎么做其实是不是就是去这里面查找元素啊其实是不是就是去我们这里面l0s里面查找元素所以这里其实非常简单直接是l miss然后 address这样不就可以了吧。 但是这里面我们得对这个address做一个什么呢应该是做一个约束是吧应该是得做一个约束我们得进行判断。 比如说index如果是小于0或者index你也不能说超过是吧但不能超过什么呢超过我这个size比如说我现在存放了三个元素那我的size就是三那你能访问的下标其实就是0一所以这个如果你大于等于这个size比如说你有三个那你这个索引等于3就不行因为你索引只能是012啊所以小于0或大于等于。 那这怎么处理呢这个怎么处理呢这看你想怎么处理比如说你不想做任何处理比如说他传错了你也不想报错那行吧你直接返回一个返回一个0给他嘛因为你传错了你传错了我就给你0这是一种处理方法。 在Java里面比较多的处理方法是直接抛出一个异常叫做死肉牛而且像这种呃数组越界的异常它已经内置了一个东西叫做index out of bossetc etc就是异常抛出一个异常那这个异常信息它是传一个字符串那这里你就可以写你的信息比如说一旦别人传错了你就抛出一个错误告诉他你为什么错了对吧 比如说我们这里就可以降嗯为什么错呢因为你index是这个对吧但是我们的size是多少呢我们的size是好这个是在干什么这个是在拼接字母之外将这个字符串跟这个整数还跟这个字符串还跟这个整数拼起来这个是Java里面的拼接字符串非常简单啊就这样写。 就抛出这个异常信息那我们看一下那这个东西是否有效呢我们来试一下。 Best点get比如说我传一个-10-10-10肯定有问题对吧我们调用get-10的话他肯定会小于0小于0就会抛出异常我们看一下抛出异常是什么反应啊我们右击我们可以发现这里出现了红色这个就是我刚刚抛出的异常这个就是我刚刚写的提示信息你看你的size是0你传个-10那肯定不合理吧对吧这肯定是不合理。 然后既然你塞子是0说明里面什么也没有什么也没有其实你传什么都不对传0也不对因为只有你至少有一个元素的时候你才能传0所以传0其实也是不对的我们来右击你看塞子是0你怎么可以传0呢也不对。 这个就是抛异常大家思考一下如果我不抛异常那也行是不是可以直接return0告诉你就是不做任何处理我就不去访问他了因为因为因为你你传错了嘛我就不做后面的事情了但这种可能提示不是很友善那Java里比较友善的提示方式其实就是抛异常就是通过错误来提醒他你错了啊就这个意思。 而且这种抛异常有个好处你发现了吗这里面有个而类似的7171那这个时候我一点你看就定位到这个地方那就知道噢你哪里错了。嗯嗯嗯。 所以你在写一个框架的时候你在封装一个框架的时候比如说我们现在就在封装一个动态速度对吧呃错误的地方的话你可真的是可以考虑采取这个抛异常的这个形式那别人在用你的框架用错了他就可以通过这个定位异常的这个方式定位到他哪里错了那这样解决解决问题就比较方便啊而且我们有一些比较友善的提示信息这个是干好。 再看一下赛那在这个其实也很简单设置index这个位置的这个元素大家想想这个怎么设置啊比如说他传一个一给我我是不是就是把一这个位置的元素给换掉就可以了而且我这个语义是什么我这个会返回一个它原来是什么相当于就是你传新的给我我会先把这个位置对应的原来元素给你同样的它传的这个index是必须跟get这个影带是一样的范围所以我们把这个东西拿过来把这东西先拿过来。 然后这里面怎么写这里面首先old先取出来l miss index。我们先取出来然后这个o的放这里然后这个l里面是然后应该是什么看你们对吧所以代码逻辑其实非常简单就这样写就可以了对吧把原来的取出来然后用新的元素覆盖掉这个位置然后返回原来的元素非常非常的这个简单。 然后的话我们再往下看添加的话我们可能要下一个再讲啊因为本来今天我们就讲复杂度的啊这个先搁着因为添加东西比较多然后我们再看一下呃什么删除删除也不行这个我们得得得下次那这个呢这个什么意思这个是看一下这个元素在我们数字中的位置。那这个怎么做很简单其实就是什么呢其实就是便利怎么便利呢 从这个位置开始便利看一下看一下这个位置是不是那个元素再看一下下一个位置再看下一个位置一旦发现这个位置是那个元素就返回这个位置所以我们这里其实非常简单这里非常简单然后这里怎么做呢这里的话由于我们是整数整数的比较直接用等号就行了这里不应该是这个这里应该是直接是size就好了对吧比如说我们有5个元素那我们就遍历5次遍历5次然后这里边这里怎么写的这里很简单I如果等于兄弟们我们就直接返回唉按照我的编程习惯一般来说判断完直接返回的我就会省略掉大括号这是我个人的一个编程习惯。 好这样就可以了大家想想是不是只要找到相等的就直接返回这个索引就好了。好如果找不到怎么办找不到一般来说我们返回-1返回-1对吧像-1这个东西呢我建议大家也是一样写成常量在拿货之前在这个位置写LV版not found然后这里面应该直接写一个-1对不对这里面not found那这个是往下走然后这个时候翻过来。 好的杨总好这个我们写完然后添加删除都放到下一节课然后这个set我们写完了然后这个get我们写完了然后这个添加放的要content是否包含这个元素那简单了这个时候我们可以直接调用我们刚刚写的如果不等于l里面那放着大家想一想是不是代表代表包含了对吧 因为如果检查出来这个这个元素的这个索引检查出来这个元素的这个索引是等于-1代表不存在如果不等于这个-1代表就存在代表就包含说content是代表包包不包含的意思。 好那这几个最基础的东西我们其实已经写完了