1ArrayList概念
ArrayList本质上是一个Object数组的封装
ArrayList可以不用一开始就定长,单独使用数组是定长的
数组可以指定存储类型,ArrayList默认为object类型
数组的增删查改需要自己实现,ArrayList是封装好的API
ArrayList使用时存在装箱拆箱,数组使用时只要不是Object数组那就不存在这个问题
数组长度为Length,ArrayLIst长度为Count
2 申明
需要引用命名空间using System.Collections;
cs
ArrayList array = new ArrayList();
3增删查改
增
cs
array.Add(1);
array.Add("123");
array.Add(true);
array.Add(new object());
删
移除指定元素 从头找 找到删
cs
array.Remove(1);
移除指定位置的元素
cs
array.RemoveAt(2);
清空
cs
array.Clear();
查
得到指定位置的元素
cs
Console.WriteLine(array[0]);
查看元素是否存在
cs
if( array.Contains("1234") )
{
Console.WriteLine("存在123");
}
正向查找元素位置
找到的返回值 是位置 找不到 返回值 是-1
cs
int index = array.IndexOf(true);
Console.WriteLine(index);
Console.WriteLine(array.IndexOf(false));
反向查找元素位置
返回时从头开始的索引数
cs
index = array.LastIndexOf(true);
Console.WriteLine(index);
改
直接改对应索引值
cs
array[0] = "999";
Console.WriteLine(array[0]);
遍历
cs
for (int i = 0; i < array.Count; i++)
{
Console.WriteLine(array[i]);
}
//迭代器遍历
foreach (object item in array)
{
Console.WriteLine(item);
}
装箱拆箱
ArrayList本质上是一个可以自动扩容的object数组,
由于用万物之父来存储数据,自然存在装箱拆箱。
当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使用时,就存在拆箱。
所以ArrayList尽量少用,之后我们会学习更好的数据容器。
cs
int k = 1;
array[0] = k;//装箱
k = (int)array[0];//拆箱