Loading...
墨滴

莫激

2021/12/09  阅读:47  主题:默认主题

什么是ArrayList

ArrayList

ArrayList本质

  • ArrayList是一个C#为我们封装好的,本质是一个**==object==类型的数组**

申明

  • 需要引用命名空间using System.Collections;
ArrayList array = new ArrayList();

增删查改

  • 相关的方法最好是去微软上去搜索方法的使用方法,会更加全面,网址如下:

    微软脚本查询

//这就相当于添加数组
array.Add(1);
array.Add("123");
array.Add(true); 

ArrayList array2 = new ArrayList(); 
array2.Add(123);
//范围增加(批量增加 把array2的list容器里的内容加到array后面)
array.AddRange(array2);

//插入 1为索引位置,"123456"是值
array.Insert(1,"123456");

array.Remove(123);//移除指定元素 从头到尾找 找到后删除,如果数组中有两个123元素,则会移除前面一个,因为是从左往右寻找
array.RemoveAt(2);//移除指定位置的元素
array.Clear();//清空

Console.WriteLine(array[0]); //得到指定位置的元素

//查看元素是否存在
if(array.Contains("123"))
{
    Console.WriteLine("存在123");
}

//正向查找元素位置
//找到的返回索引值,是位置  找不到的话返回值是-1
//如果数组中有两个true,则会返回第一个true,因为是从左到右遍历查找的
int index = array.IndexOf(true); 
console.WriteLine(index); //true是值,然后返回的是索引位置

//反向查找元素位置
//返回时从头开始的索引数
index = array.LastIndexOf(true);
console.WriteLine(index);

array[0]="999";

遍历

array.Count;//长度
array.Capacity;//容量
for(int i =0;i<array.Count;i++)
{
    console.WriteLine(array[i]);
}
1638973949652

迭代器遍历

foreach(var item in array)
{
    console.WriteLine(item);
}

装箱拆箱

  • ArrayList本质上是一个可以自动扩容的object数组==(object是引用类型)==
  • 由于用万物之父来存储数据,自然存在装箱和拆箱
  • 当往其中进行值类型存储时就是在装箱,例如int i= 1; array[0] = i;其实就是将值类型用引用类型存储,就是将栈内存转移到堆内存中
  • 当将值类型对象取出来转换使用时,就存在拆箱,例如i = (int)array[0];这是将引用类型中的值类型提取出来,堆内存会迁移到栈内存中
  • 所以ArrayList尽量少用

ArrayList的好处与坏处*

  • 好处:相比数组的话,ArrayList在增删改会更方便快捷。而且不确定类型名时可以方便参数的存储和传递,例如:

    //这里用Object是因为不知道会有什么类型的参数传进来,所以才用这个
    void arrayInsert(int index,Object value)
    {
        //将index后面的数往后移动,腾出空间给value插入index索引位置
        for(int i = array.Length-1;i>=index;i--)
        {
            array[i+1] = array[i];
        }
        array[index] = value;
    }
  • 坏处:在增删改过程中存在装箱拆箱过程,也就是数据从栈到堆,从堆到栈的过程,而这个过程就会提高性能的消耗

莫激

2021/12/09  阅读:47  主题:默认主题

作者介绍

莫激