如何往数组里添加值

如何往数组里添加值,第1张

数组是不允许再往里面添加值的,你可以将数组放到List<int>里面

int[] a ={ x, x, x }

List<int>list = new List<int>()

foreach (int i in a)

{

list.Add(i)

}

list.Add(y)

向数组里添加一个元素怎么添加,这儿总结有三种方法:

1、一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。

但有个可以改变大小的数组为ArrayList,即可以定义一个ArrayList数组,然后用add(element)方法往里添加元素即可,还可add(index,element)往指定下标处添加元素

2、思路为先把array转化为list,用list的add()方法添加元素,再把list转化为array。

但这儿会有一个陷阱盲区,在把array转化为list的过程中,使用的asList()方法会返回一个final的,固定长度的ArrayList类,并不是java.util.ArrayList,直接这样利用它进行add()或remove()是无效的。

那应该怎么做呢,在定义list的时候就直接对array进行转化

第三个方法思路为创建一个新数组,新数组的大小为旧数组大小+1,把旧数组里的元素copy一份进新数组,并把要添加的元素添加进新数组即可。

切片是数组的抽象。 切片使用数组作为底层结构。 切片包含三个组件:容量,长度和指向底层数组的指针。

通过使用 append 或 copy 函数可以增加切片的容量。 append 函数可以为数组的末尾增加值,并在需要时增加容量。

当前储存空间存不下数据时,空间会以之前的空间数*2

比如:

定义 numbers 的数组长度为5 ,空间给他10,并追加数据到切片。

空间为10, 当我们再添加一个数据到切片时候,空间是多少了呢?

得到数据为20,和我们设想的一样。

切片中的数据是共用内存,也就是我们选区切片区间的某一个值,并且在这个小对象中进行数据的修改,会影响整个切片的值,在开发当中非常要注意这种。

举个例子:

取了一个first 和second 这两个数据重合的数据是2.

打印一下:

虽然在second 中修改了数据,但是影响到了大对象numbers 的数据,还有一个要注意的是,first 小对象,他的内存分配是5,second 的空间是4,这是为啥呢?原来,这样取的小对象切片,的空间是这个切片加上大对象末尾的值

开发中如果修改了其中的一个变量,但是又不想影响大对象,这个时候会傻掉。

那如何去获取一个和numbers 一样的数据,但是又不会影响numbers呢?

我们copy一份numbers

输出一下结果:

好,不懂在座的各位看懂了没有。没有影响的,通过copy 切片再去修改切片的值,是不会印象原切片的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11649733.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存