ArrayList in C#

news/2024/9/30 11:41:40

https://dotnettutorials.net/lesson/arraylist-collection-csharp/

c#中的数组列表是什么?
c#中的ArrayList是一个非泛型集合类,它的工作方式类似于数组,但提供了动态调整大小、从集合中间添加和删除元素等功能。c#中的ArrayList可以用来添加未知数据,也就是说,当我们不知道数据的类型和数据的大小时,我们可以使用ArrayList。

它用于创建动态数组,意味着数组的大小会根据程序的需要自动增加或减少。不需要指定数组列表的大小。在ArrayList中,可以存储相同类型的元素,也可以存储不同类型的元素。

c#中ArrayList类的属性
元素可以在任何时间点从Array List集合中添加和删除。

ArrayList不能保证被排序。
ArrayList的容量是指该数组列表可以容纳的元素数量。
可以使用整数索引访问此集合中的元素。此集合中的索引是从零开始的。
它允许重复元素。

 

如何在c#中创建数组列表?
c#中的ArrayList提供了以下三个构造函数,我们可以使用它们来创建ArrayList类的实例。

ArrayList():该方法用于初始化ArrayList类的一个新实例,该实例为空,初始容量为默认值。
ArrayList(ICollection c):该方法用于初始化ArrayList类的新实例,该实例包含从指定集合复制的元素,且初始容量与复制的元素数量相同。参数c指定将其元素复制到新列表的Collection。
ArrayList(int capacity):初始化ArrayList类的一个新实例,该实例为空,具有指定的初始容量。参数capacity指定新列表最初可以存储的元素数量。
首先,我们需要导入系统。然后可以使用第一个构造函数创建ArrayList的实例,如下所示。您可以使用以下任何一种语法:

 

如何在c#中添加元素到数组列表?
ArrayList非泛型类提供了Add()方法,我们可以使用该方法向数组列表中添加元素,甚至可以使用对象初始化语法向ArrayList中添加元素。最重要的一点是,我们可以在ArrayList中添加多个不同类型的元素,尽管也可以添加重复的元素。

让我们看一个例子来理解在c#中向ArrayList类型的集合中添加元素的两种方法。请看下面的例子。在这里,您可以看到,我们添加了不同类型的数据以及重复的数据,并且可以接受。

using System;
using System.Collections;
namespace Csharp8Features
{public class ArrayListDemo{public static void Main(){//Adding elements to ArrayList using Add() methodArrayList arrayList1 = new ArrayList();arrayList1.Add(101); //Adding Integer ValuearrayList1.Add("James"); //Adding String ValuearrayList1.Add("James"); //Adding Duplicate ValuearrayList1.Add(" "); //Adding EmptyarrayList1.Add(true); //Adding BooleanarrayList1.Add(4.5); //Adding doublearrayList1.Add(null); //Adding nullforeach (var item in arrayList1){Console.WriteLine(item);}//Adding Elements to ArrayList using object initializer syntaxvar arrayList2 = new ArrayList(){102, "Smith", "Smith", true, 15.6};foreach (var item in arrayList2){Console.WriteLine(item);}Console.ReadKey();}}
}

如何在c#中访问数组列表?
如果您查看ArrayList的定义,那么您将看到ArrayList类实现了如下图所示的IList接口。因为它实现了IList接口,所以我们可以使用索引器访问元素,就像访问数组一样。索引从0开始,每个后续元素加1。因此,当一个集合类实现了IList接口时,我们就可以通过使用整数索引访问该集合的元素。

 当将元素添加到ArrayList中时,它会自动将元素强制转换为对象类型,然后将它们存储在集合中。因此,在访问元素时需要显式转换为适当的类型,否则可以使用var变量。为了更好地理解,请看下面的例子。代码是自解释的,请通过注释。

using System;
using System.Collections;
namespace Csharp8Features
{public class ArrayListDemo{public static void Main(){//Adding elements to ArrayList using Add() methodArrayList arrayList1 = new ArrayList();arrayList1.Add(101); //Adding Integer ValuearrayList1.Add("James"); //Adding String ValuearrayList1.Add(true); //Adding BooleanarrayList1.Add(4.5); //Adding double//Accessing individual elements from ArrayList using Indexerint firstElement = (int)arrayList1[0]; //returns 101string secondElement = (string)arrayList1[1]; //returns "James"//int secondElement = (int) arrayList1[1]; //Error: cannot cover string to intConsole.WriteLine($"First Element: {firstElement}, Second Element: {secondElement}");//Using var keyword without explicit castingvar firsItem = arrayList1[0]; //returns 101var secondItem = arrayList1[1]; //returns "James"//var fifthElement = arrayList1[5]; //Error: Index out of rangeConsole.WriteLine($"First Item: {firsItem}, Second Item: {secondItem}");//update elementsarrayList1[0] = "Smith";arrayList1[1] = 1010;//arrayList1[5] = 500; //Error: Index out of rangeforeach (var item in arrayList1){Console.Write($"{item} ");}Console.ReadKey();}}
} 

如何在c#中迭代数组列表?
如果您查看ArrayList的定义,那么您还会看到ArrayList非泛型集合类实现了如下图所示的ICollection接口。我们知道ICollection接口支持集合类型的迭代。因此,我们可以使用foreach循环和for循环来迭代ArrayList类型的集合。

 数组列表的Count属性返回数组列表中存在的元素总数。让我们用一个例子来理解这一点。

using System;
using System.Collections;
namespace Csharp8Features
{public class ArrayListDemo{public static void Main(){//Adding elements to ArrayList using Add() methodArrayList arrayList1 = new ArrayList();arrayList1.Add(101); //Adding Integer ValuearrayList1.Add("James"); //Adding String ValuearrayList1.Add(true); //Adding BooleanarrayList1.Add(4.5); //Adding double//Iterating through foreach loopConsole.WriteLine("Using ForEach Loop");foreach (var item in arrayList1){Console.Write($"{item} ");}//Iterating through for loopConsole.WriteLine("\n\nUsing For Loop");for (int i = 0; i < arrayList1.Count; i++){Console.Write($"{arrayList1[i]} ");} Console.ReadKey();}}
}

如何在c#中插入一个元素到数组列表集合的指定位置?
Add方法将在集合的末尾添加元素,即在最后一个元素之后。但是,如果你想在指定的位置添加元素,那么你需要使用ArrayList类的Insert()方法,它将在指定的索引位置插入元素到集合中。下面给出了使用Insert方法的语法。
插入索引,对象?值);
这里,参数index指定应该插入值的索引位置,参数值指定要插入到列表中的对象。它基于一个零索引。为了更好地理解,请看下面的例子。

using System;
using System.Collections;
namespace Csharp8Features
{public class ArrayListDemo{public static void Main(){ArrayList arrayList = new ArrayList(){101,"James",true,10.20};//Insert "First Element" at First Position i.e. Index 0arrayList.Insert(0, "First Element");//Insert "Third Element" at Third Position i.e. Index 2arrayList.Insert(2, "Third Element");//Iterating through foreach loopforeach (var item in arrayList){Console.WriteLine($"{item}");}Console.ReadKey();}}
}

 

如果有一个集合,并且希望将该集合插入Array List的另一个集合,那么可以使用InsertRange()方法。InsertRange()方法的作用是:将集合中的元素插入到指定索引处的ArrayList中。语法如下所示。

void InsertRange(int index, ICollection c)

这里,参数index指定新元素应该插入的位置,参数c指定将其元素插入ArrayList的Collection。集合本身不能为空,但它可以包含为空的元素。为了更好地理解,请看下面的例子。

using System;
using System.Collections;
namespace Csharp8Features
{public class ArrayListDemo{public static void Main(){ArrayList arrayList1 = new ArrayList(){"India","USA","UK","Nepal"};Console.WriteLine("Array List Elements");foreach (var item in arrayList1){Console.Write($"{item} ");}ArrayList arrayList2 = new ArrayList(){"Srilanka","Japan","Britem"};arrayList1.InsertRange(2, arrayList2);Console.WriteLine("\n\nArray List Elements After InsertRange");foreach (var item in arrayList1){Console.Write($"{item} ");}Console.ReadKey();}}
}

如何在c#中删除数组列表中的元素?
如果你想在c#中从ArrayList中删除元素,那么你可以使用c#中ArrayList类的remove (), RemoveAt()或RemoveRange()方法。

Remove(对象?obj):此方法用于从System.Collections.ArrayList中删除第一次出现的特定对象。参数obj指定要从数组列表中移除的对象。可以为空。
RemoveAt(int index):该方法用于移除ArrayList中指定索引处的元素。参数index指定要删除的元素的索引位置。
RemoveRange(int index, int count):这个方法用于从ArrayList中移除一段元素。参数index指定要删除的元素范围的起始索引位置,参数count指定要删除的元素数量。
为了更好地理解,请看下面的例子。

 

using System;
using System.Collections;
namespace Csharp8Features
{public class ArrayListDemo{public static void Main(){ArrayList arrayList = new ArrayList(){"India","USA","UK","Nepal","HongKong","Srilanka","Japan","Britem","HongKong",};Console.WriteLine("Array List Elements");foreach (var item in arrayList){Console.Write($"{item} ");}arrayList.Remove("HongKong"); //Removes first occurance of nullConsole.WriteLine("\n\nArray List Elements After Removing First Occurances of HongKong");foreach (var item in arrayList){Console.Write($"{item} ");}arrayList.RemoveAt(3); //Removes element at index postion 3, it is 0 based indexConsole.WriteLine("\n\nArray List1 Elements After Removing Element from Index 3");foreach (var item in arrayList){Console.Write($"{item} ");}arrayList.RemoveRange(0, 2);//Removes two elements starting from 1st item (0 index)Console.WriteLine("\n\nArray List Elements After Removing First Two Elements");foreach (var item in arrayList){Console.Write($"{item} ");}Console.ReadKey();}}
}

如何从c#中删除数组列表中的所有元素?
如果你想从ArrayList中删除所有元素或清除所有元素,那么你可以使用ArrayList类的clear()方法,但是这个方法不会减少ArrayList的容量。为了更好地理解,让我们看一个例子。

using System;
using System.Collections;
namespace Csharp8Features
{public class ArrayListDemo{public static void Main(){ArrayList arrayList = new ArrayList(){"India","USA","UK","Denmark","Nepal",};int totalItems = arrayList.Count;Console.WriteLine(string.Format($"Total Items: {totalItems}, Capacity: {arrayList.Capacity}"));//Remove all items from the Array list             
            arrayList.Clear();totalItems = arrayList.Count;Console.WriteLine(string.Format($"Total Items After Clear(): {totalItems}, Capacity: {arrayList.Capacity}"));Console.ReadKey();}}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29841.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

bzoj4399: 魔法少女LJJ

先上头图:诈骗题认真读题 c<=7 只需要考虑前七个操作 一.动态开点即可 二.线段树合并 三.四.对于这两个操作,可以先统计出有多少个数小于/大于x,然后删除所有小于/大于x的数,并在x位置加上这些数 五.下放标记查询即可 六.每个数最大为1e9,直接乘肯定会炸,所以可以用do…

企业数据保护,从严防内部信息泄露开始

在当今的数字化时代,数据已成为企业最宝贵的资产之一。然而,随之而来的是数据安全威胁,尤其是内部信息泄露,这不仅会导致企业面临巨大的经济损失,还可能损害企业的品牌形象和客户信任。因此,从严防内部信息泄露开始,成为企业数据保护策略中的重要一环。确立内部数据分类…

实验四--代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…

选择排序桌面检查

码云代码:https://gitee.com/yibo886/codes/0ihau3t9pj6bkfqzxcmnl93 博客园: 一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容…

docker的一些命令 以及dockerFile语法

文件夹重新命名mv node-v14.18.1-linux-x64 node-v14.18.1 dokcer 命令 将linux的文件复制到docker容器里面 docker cp /usr/local/node-v14.18.1/ 8ec26052dfad:/usr/local/node-v14.18.1 将docker容器里面的文件复制到linux docker container cp ng…

实验四:代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…

代码审查

一、实验题目 :代码审查 二、实验目的熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查;根据代码规范制定代码走查表,并按所制定的审查规范互审代码。三、实验内容 PyCharm环境预先准备在PyCharm环境下实现对输入的n个整数进行排序的代码;利用Code Inspe…

实验4:代码审查

一、实验题目 :代码审查 二、实验目的 1、熟悉编码风格,利用开发环境所提供的平台工具对代码进行自动格式审查; 2、根据代码规范制定代码走查表,并按所制定的审查规范互审代码。 三、实验内容 1、IDEA环境和PyCharm环境二选一; IDEA环境 (1)预先准备在IDEA环境下实现对输…