C#中ArrayList
ArrayList
1:位于System.Collections命名空间下,
2:ArrayList的容量可以根据需要自动扩充
3:只能是一维形式,数组可以是多维的
4:提供添加、删除、和插入某一范围元素的方法
三种构造方法
1) ArrayList list1 = new ArrayList();
2) int[] arr = new int[]{} ;
ArrayList list2 = new ArrayList(arr) ;
3) ArrayList list3 = new ArrayList(10) ;
ArrayList的属性
1)Capacity ---获取或设置ArrayList可包含的元素
2)Count---获取实际包含的元素数
3)IsFixedSize ---获取一个值,指示是否具有固定大小
4)IsReadOnly--- 是否为只读。
ArrayList的方法
1)public virtual int Add(Object value)
2) public virtual void Insert(int index, Object value)
3) InsertRange(int Index, 一维数组的名称)
4) public virtual void Clear() --移除所有元素
5)public virtual void Remove(Object obhj) ---删除指定的元素
6)public virtual void RemoveAt(int Index) ---删除指定索引的元素
7)public virtual void RemoveRange(int index, int count)--删除指定的多个元素
8) foreach遍历ArrayList
9) IndexOf("A") ---返回A第一次出现的索引的位置,未找到的话返回-1;
10) IndexOf("A", 7) ---从索引7开始查找,未找到返回-1 ;
11) LastIndexOf("A") ---最后一次出现A的索引
12)LastIndexOf("A", 7)---下标0~7这段最后一次出现A的位置索引
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//ArrayList类位于System.Collections命名空间内
using System.Collections;
//ArrayList是一种动态数组
//ArrayList的容量可以根据需要自动扩充
//ArrayList提供了添加,删除,和插入某一范围元素的方法
//Array List提供了将只读和固定大小包装返回集合的方法,数组不提供
//Array List只能是一维的形式,数组可以多维
namespace ArrayListDemo01
{
internal class Program
{
static void Main(string[] args)
{
//ArrayList的构造函数
//以默认(16位)大小来初始化内部的数组
ArrayList list = new ArrayList();
//用一个ICollection对象来构造,并把集合的元素添加到ArrayList中
int[] arr1 = {10,9,8,7,6,5,4,3,2,1,0,11,12,13,14,15,16};
ArrayList list1 = new ArrayList(arr1 );
//用指定大小初始化内部数组
ArrayList list2 = new ArrayList(20);
Console.WriteLine("list中包含的元素数为:");
//ArrayList的属性Capacity获取或设置ArrayList中可包含的的元素数
Console.WriteLine(list.Capacity);
list.Capacity = 10;
Console.WriteLine("list可以包含的元素数:");
Console.WriteLine(list.Capacity);
//ArrayList中的属性Count是获取实际包含的元素数
//如果ArrayList没有被初始化,那么count=0;
Console.WriteLine("list中实际包含的元素数:");
Console.WriteLine(list.Count);
//ArrayList的初始化
for(int i=0; i<list.Capacity; i++)
{
list.Add(i);
}
Console.WriteLine("初始化后,list内包含的元素数:");
Console.WriteLine(list.Count);
//常用的属性及说明
//IsFixedSize
Console.WriteLine(list1.IsFixedSize); //false
//IsReadOnly
Console.WriteLine(list1.IsReadOnly); //false
//Item 获取或设置指定索引处的元素
//和数组访问元素的方法一样
Console.WriteLine(list1[5]);
//ArrayList中的方法
//public virtual int Add(Object value)
//virtual方法在派生类中可以不重写,有方法体
//抽象方法只有声明没有方法体,派生类中必须重写
list1.Add(17);
list1.Add(18);
foreach(int i in list1)
{
Console.Write(i + " ");
}
Console.WriteLine();
//Insert(), 插入元素
//public virtual void Insert(int index, Object value)
list1.Insert(0, 100);
foreach (int i in list1)
{
Console.Write(i + " ");
}
Console.WriteLine();
//ArrayList插入一个数组
//InsertRange()
int[] arr2 = {11,22,33,44,55,66,77 };
list1.InsertRange(5,arr2);
foreach (int i in list1)
{
Console.Write(i + " ");
}
Console.WriteLine();
//ArrayList删除一个元素
int[] array = {11,2,3,44,55,55,55,66,77,88,99,100,101,102 };
ArrayList al1 = new ArrayList(array);
//Remove()从ArrayList中移除特定对象的第一个匹配项
al1.Remove(55);//括号里面是ArrayList中的元素
foreach (int i in al1)
{
Console.Write(i + " ");
}
Console.WriteLine();
//RemoveAt()移除指定索引的元素
al1.RemoveAt(5);//括号里面是索引
foreach (int i in al1)
{
Console.Write(i + " ");
}
Console.WriteLine();
//RemoveRange()
//public virtual void RemoveRange(int index, int count)
al1.RemoveRange(4, 3);
foreach (int i in al1)
{
Console.Write(i + " ");
}
Console.WriteLine();
//clear()删除所有元素
al1.Clear();
Console.WriteLine(al1.Count);//获取实际包含的元素数
Console.WriteLine(al1.Capacity);//获取或设置可包含的元素数
Console.WriteLine();
int[] al2 = new int[] { 11, 33, 2, 5, 10, 10, 10, 15, 63, 64, 54 };
ArrayList arrList = new ArrayList(al2);
//Indexof("A")返回第一次出现的索引位置,未找到返回-1
Console.WriteLine("第一次出现10的索引位置为:{0} ", arrList.IndexOf(10));
//IndexOf("A", 7)从索引7开始查找,未找到返回-1,包含7这个索引位置
Console.WriteLine(arrList.IndexOf(10, 5));//=5;
//LastIndexOf(10)从后面开始检索10第一次出现的索引
Console.WriteLine(arrList.LastIndexOf(10));//=6从
Console.WriteLine(arrList.LastIndexOf(10, 4));//=4
//public virtual bool Contains(Object item)
Console.WriteLine(arrList.Contains(20));//=false
Console.WriteLine(arrList.Contains(10));//=true
}
}
}