当前位置:网站首页 > Vue.js开发 > 正文

js数组方法改变原数组(js数组方法改变原数组的大小)



地址连续

直接通过下标获取数组里的内容:数组的下标从0开始

默认值: int 0 char 空 false 0.0 string null

用 java 写数组(定义、输出):

数组的长度不可变

可变数组 List ArrayList : new ArrayList<>();

数组扩容:

数组长度不够时,重新创建有个比原数组更长的数组brr,把原数组arr当中的数据全部复制到新数组当中

arr指向brr ,arr原来指向的就会被系统回收掉(Java有自动回收机制)

public class Test { public static void main(String[] args) { //创建数组 int[] arr = {5,20,55}; int[] brr = new int[arr.length+1]; for(int i = 0;i<arr.length;i++) { brr[i] = arr[i]; } arr = brr; arr[3] = 50; System.out.println(Arrays.toString(arr)); } }

自建ArrayList

  • ArrayList.java:

package 数组;

public class ArrayList {

//全局变量 int size = 0;//记录有效数据的个数 int capacity = 10;//数组容量 double factor = 1.5;//因数1.5 int[] arr = new int[capacity];

/* int[] arr;

int size;//记录有效数据的个数

int capacity;//数组容量

double factor;//因数1.5

//构造方法 public ArrayList() { size = 0; capacity = 10; factor = 1.5; arr = new int[capacity]; }*/ public void add(int element) { if(size==capacity) { //数组满了,满了扩容 //强制转换成int类型的数据 capacity = (int) (capacity*factor); int[] brr = new int[capacity]; for(int i=0;i<arr.length;i++) { brr[i] = arr[i]; } arr = brr; } //没有满 arr[size] = element; size++; } //打印 public String toString() { String res = "["; //为了使打印出有效数据,后面一些默认数据0之类的不要 for(int i=0;i<size;i++) { //最后一个数据 if(i==size-1) { res+=arr[i]; } else { res+=arr[i]+","; } } res+="]"; return res; }

}

  • 模拟ArrayList.java:

package 数组;

public class 模拟ArrayList {

public static void main(String[] args) { //new一个对象出来,list是对象 ArrayList list = new ArrayList(); list.add(1); list.add(3); list.add(3); list.add(4); list.add(5); list.add(6); list.add(6); list.add(2); list.add(1); list.add(9); list.add(6); list.add(3); //有自己的toString方法,调用自己的 System.out.println(list.toString()); //所有打印默认调用的都是toString方法(自己的) System.out.println(list); }

}

数组的增删改查

最后位置插入:

插入之前判断数组当中有没有位置:判断size和数组的长度是否相等

  • 不相等则插入,说明有位置

size刚好就是需要插入的位置,有一个数据的话,size=1,插入数据的话应该插入下表为1的位置

arr[size] = num;

size++

  • 相等则满了,需要扩容

指定位置插入:

1、判断插入的位置是否合法【0,size】

2、判断数组当中有没有位置:判断size和数组的长度是否相等,相等则满了,需要扩容

3、eg:在下标为2的位置插入数据

把原数据想要插入的位置及其之后的数据,按照从后往前的顺序 依次向后移动一位

4、数据移动完成之后,原来的数据不怕被覆盖掉,写入数据

size++

有序数组的插入:

1、判断数组当中有没有位置:判断size和数组的长度是否相等,相等则满了,需要扩容

2、记录第一个比目标数值大的数据所在的位置

3、把原数据想要插入的位置及其之后的数据,按照从后往前的顺序 依次向后移动一位

4、数据移动完成之后,原来的数据不怕被覆盖掉,写入数据

size++

删除

把数据覆盖掉,size-1

删除第一个符合条件的数据:

1、从前往后遍历,找到要删除的元素,记录其所在的位置 position

2、position之后的数据 按照从前往后的数据 依次向前覆盖

size--

3、结束,不再查找

eg:删除100

删除所有符合条件的数据:

1、从后往前遍历,找到要删除的元素,记录其所在的位置 position

2、position之后的数据 按照从前往后的数据 依次向前覆盖

size--

3、继续向前查找,直到遍历完全部的数据

直接拿下标进行修改arr[2]=100

到此这篇js数组方法改变原数组(js数组方法改变原数组的大小)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • map转jsonobject字符串(map转化为json字符串)2025-09-17 18:36:05
  • vue2升级3(vue2升级到vue3的优点)2025-09-17 18:36:05
  • vue插槽的使用场景(vue插槽用法)2025-09-17 18:36:05
  • Ubuntu源码下载(ubuntu16.04下载源)2025-09-17 18:36:05
  • 萌新想问一下js是什么意思啊(js是什么意思啊?)2025-09-17 18:36:05
  • crsed汉化(cr5.2汉化)2025-09-17 18:36:05
  • ubuntu镜像有多大(ubuntu20.04镜像多大)2025-09-17 18:36:05
  • pcie5.0和pcie4.0区别大妈(pcie4.0与pcie3.0)2025-09-17 18:36:05
  • pcie5.0显卡插槽能上pcie4.0卡吗(pcie4.0的显卡能上在pcie3.0插槽上吗)2025-09-17 18:36:05
  • 字符串转int js(字符串转int类型)2025-09-17 18:36:05
  • 全屏图片