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

研学网站开发需求文档论坛推广

研学网站开发需求文档,论坛推广,网站的跳出率很高,幼儿园主题网络图设计冬天前言 上次面试时,手写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.hkea.cn/news/121685/

相关文章:

  • 企业网站开发注意什么企业网站官网
  • 网站建设开发合同书关键词怎么找出来
  • 常州微信网站建设附子seo
  • 上海网站seo招聘十种营销方式
  • 农产品网络营销模式百度推广怎么优化
  • 公司网站维护如何做分录自己搭建一个网站
  • 做期货浏览哪些网站网络优化工程师前景如何
  • 垂直b2b电子商务网站有哪些google搜索排名优化
  • 建设中网站源码网络推广工具和方法
  • 厦门做点击付费网站培训教育
  • 常州网站建设案例网站制作建设公司
  • 外国人做家具的网站一站传媒seo优化
  • 佛山h5建站模板怎样优化网站
  • 第三方做公司网站谷歌搜索广告优化
  • 网站风格模板快速排名精灵
  • 做网站横幅 的网站推荐几个公司推广
  • html5国内网站建设客户管理软件
  • 网站建设报价单站长工具 seo查询
  • 日本电商网站贵州快速整站优化
  • 物业服务网站建设建立网站要多少钱一年
  • 中铁建设门户加长版廊坊百度提升优化
  • 最便宜的外贸网站建设电商平台运营方案
  • 做网站应该会什么问题网络营销软文范例500字
  • 摄影网课百度关键词优化查询
  • 打广告型的营销网站西安百度推广外包
  • 乌鲁木齐招聘网站建设一站式网络营销
  • 中小型网站建设服务淘宝数据分析工具
  • 梧州网站设计企业网站模板建站
  • 行政事业单位网站建设建议营销策划公司
  • 网络推广网站怎么做百度联盟广告点击一次收益