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

嘉兴做外贸网站比较好的公司企业网站html源码

嘉兴做外贸网站比较好的公司,企业网站html源码,建浏览器网站制作,建筑装饰网站模板前言 上次面试时,手写ArrayList竟然翻车,忘了里面的扩容与缩容的条件,再次实现一次,加深印象 源码讲了什么 实现了List列表和RandomAccess随机访问接口List具有增删改查功能,RandomAccess支持下标访问内部是一个扩容…

前言

上次面试时,手写ArrayList竟然翻车,忘了里面的扩容与缩容的条件,再次实现一次,加深印象

源码讲了什么

  1. 实现了List列表和RandomAccess随机访问接口
  2. List具有增删改查功能,RandomAccess支持下标访问
  3. 内部是一个扩容数组,默认大小是10,size=size+size/2

如何实现

  1. 实现List的add,remove,set,get
  2. 实现RandomAccess的下标访问
  3. 实现集合的基本size,isEmpty,toString
  4. 实现扩容grow,每一增到1.5倍,size=size+size/2
  5. 缩容方法需要手动调用(内部不会再remove自动调用),使数组容量等于当前元素个数,array=Array(size),size元素个数,array.size时容量
fun main() {val list = MyArrayList()list.add(1)list.add(2)list.add(3)list.add(0, 2)list.set(list.size(), 7)println(list)
}class MyArrayList {// 方便扩展,默认是10个,每次扩容size=size+size>>2private var array = Array(10) { 0 }// 当前大小private var size = 0// 添加fun add(value: Int) {if (size >= array.size) {grow(size + 1)}array[size++] = value}// 中间插入,按下标fun add(index: Int, value: Int): Boolean {if (size !in 0..size) {return false}if (size >= array.size) {grow(size + 1)}for (i in size downTo index + 1) {array[i] = array[i - 1]}array[index] = valuesize++return true}// 删除,按值,按下标删除已经废弃了fun remove(value: Int): Boolean {var index = -1for (i in 0 until size) {if (array[i] == value) {index = ibreak}}if (index == -1) {return false}for (i in index + 1 until size) {array[i - 1] = array[i]}size--return true}// 改fun set(index: Int, value: Int): Boolean {if (index !in 0 until size) {return false}array[index] = valuereturn true}// 查fun get(index: Int) = if (index !in 0 until size) -1 else array[index]// toStringoverride fun toString() = StringBuilder().apply {append("[")for (i in 0 until size) {append(if (i == 0) array[i] else ", ${array[i]}")}append("]")}.toString()// 扩容,添加大量元素时会使用minCapacityprivate fun grow(minCapacity: Int) {var newCapacity = Math.max(minCapacity, array.size + array.size / 2)val newArray = Array<Int>(newCapacity) { 0 }for (i in 0 until size) {newArray[i] = array[i]}array = newArray}// 缩容方法不用,不写// 用来判断的emptyfun isEmpty() = size == 0fun isNotEmpty() = size > 0fun size() = size
}
http://www.yayakq.cn/news/904549/

相关文章:

  • 企业宣传网站多大主机网站开发招标技术要求
  • 哪里可以做网站的无锡网站建设优化建站
  • 求推荐做ppt的网站软件开发专业专科
  • 有做思维图的网站吗workpress做静态网站
  • 莱芜网站建设莱芜2023年天津市施工招标公告时间
  • 网站SEO容易做吗wordpress 查询条件
  • 企业做网站的好处哈尔滨网站优化如何
  • discuz 科技网站模板网络系统集成结课论文
  • 长春模板网站建站百度手机助手下载2022官方正版
  • 网站建设kaituozu做网站怎么做鼠标跟随
  • 成都装修网站设计网站开发的功能需求和模块划分
  • 哪个网站可以卖自己的设计怎么做网站的浏览量
  • 溧阳常州做网站wordpress 制作404
  • 继续访问这个网站网站建设dw站点建设
  • 帮公司制作一个网站是如何收费阿里巴巴logo高清
  • 鲜花销售网站开发费用哪个网站可以付费做淘宝推广
  • 网站收录慢宁波网络推广渠道
  • 网站开发技术文档格式网页编辑岗位职责
  • 什么网站做招聘效果好南通建设网站公司
  • 关键词排名查询api十堰优化排名技术厂家
  • 合肥哪家制作网站wordpress添加注册页面模板
  • 阿里巴巴有几个网站是做外贸的常用网站png
  • 网站页面尺寸大小长春门户网站建设制作
  • 网站整体建设方案常平东莞网站设计
  • 吴江建网站外贸营销方式有哪些
  • 公司网站做么做百度排名泰安网络安全培训
  • 公司建设网站能提升什么竞争力网站开发定制案例展示
  • 晋城网站设计太原有做网站的吗
  • 山西做网站站长工具在线免费观看
  • 根据图片做网站用什么搜索wordpress博客