JavaSE—集合框架

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

集合框架:

System.arraycopy:

1.数组对象

2.从第几个下表开始拷贝

3.接受的数组对象

4.从第几个下表开始存放

5.要拷贝多长

使用System.arraycopy();拷贝方法,拷贝数组的参数,提高代码的执行效率。

改善集合每次new对象问题,不要每次传进参数都要new对象,所以我们在第一次创建对象数组时长度就为5,如果本次只传4-5个数据的话那就不需要重新new数组。然后创建一个属性index=0,然后objs[index++]=value;后加加,第一个值等于传进来的val;

问一下现在的数组长度是否能存储当前值,不能存储的话就重新new一个数组,长度是原来数组的1.75倍,新数组创建完成后就拷贝老数组的数据,从老数组的第0个下表,拷贝给新数组,新数组的第0个放,老数组有多长就拷贝多长,拷贝完成后覆盖老数组,让属性指向新数组。

然后objs[index++]=val;赋值。

get:用下表得到存放的数据,给一个下表判断是否大于等于index(存储下标后加加),大于就说明下标越界了。

size:数组存放数据的长度。反馈出去。

数组的删除:数组的删除就是覆盖。

比如我们申请一个数组,数组里面有“A”,“B”,“C”“D”,“E”,“F”,“G”。

假设我们要删除下标为3里面的数据,就犹如把“E”,“F”,“G”,复制一份粘贴在从 下标3开始的数组内。删除最后一个就直接数组长度减减。

判断下标是否越界,是越界的话直接抛出越界异常。

下标没越界的情况下询问它是不是要删除最后一个,是删除最后一个把该下标等于空。数组长度是7的话,减减后就是6,也就是数组对应的下标6,应为数组下标从0开始。(因为java在没有内存地址指向引用的情况下才会回收内存)

删除第一个的话,就是用System.arrycopy();老数组从下标第i+1个开始拷贝,拷贝给当前自己数组第i个(要删除的位置),拷贝长度是老数组长度减去-i-1的长度。

测试:移除第一个。

缩存储容器:请问当前objs.length/index>=3,符合的话就新申请一个数组,数组长度是来数组的2分之一,然后将老数组的第0个开始拷贝给新数组的0个,老数组有多长就放多长。(长度能被3整除删除一半的数组长度)

推荐阅读更多精彩内容

  • 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...
    凯哥学堂阅读 40评论 0 0
  • 集合的迭代操作 : 迭代器对象 : 方式一 : for循环for循环 方式二 : for each增强for循环f...
    冒险小A阅读 103评论 0 1
  • 栈 1. 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被...
    程序员高级码农阅读 5,364评论 0 11
  • 1.链表集合 什么链表集合?链表集合分为单链集合和双链集合,其中这里的“链”字表示引用的意思,那单链也可以叫单引用...
    凯哥学堂阅读 56评论 0 0
  • 不知从何时,发现你悄悄地来了 ,而我却在无意之中看到了。 如果有一天我没有发现你,你却绽放。 没有华丽的语言,没有...
    张兰花阅读 94评论 0 0
  • 然后兜兜转转 然后平平淡淡 然后星移物换 我们没有散
    柚子青了阅读 81评论 0 0
  • 爸爸你能活过来就好了,我活的真的好累好累……人间有你的灵魂吗?如果有,你为什么不帮帮我……
    海裳依旧阅读 160评论 0 0
  • 门千理25岁生日快乐篇 2015年4月19日 妈妈的煽情 1990年4月19凌晨4点20分,你出生了,从...
    田园牧歌123阅读 428评论 0 0