轻松学习C#的ArrayList类
作者:丿木呈广予口贝 发布时间:2022-08-07 18:53:34
动态数组ArrayList类在System.Collecions的命名空间下,所以使用时要加入System.Collecions命名空间,而且ArrayList提供添加,插入或移除某一范围元素的方法。在ArrayList中,用户只能一次获取或设置一个元素的值。
一、ArrayList元素的添加
ArrayList提供了两种方法用于向ArrayList添加元素,即Add和AddRange。
(1),Add方法将单个元素添加到列表的尾部,其格式为:ArrayList 对象.Add(要添加的值)
(2),AddRange方法获取一个实现ICollection接口的集合实例,并将这个集合实例按顺序添加到列表的尾部,其格式为:ArrayList 对象.AddRange(要添加的数组)
例一、通过上述的方法对数组进行元素的添加和数组的添加
using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 动态数组的使用
{
class Program
{
static void Main(string[] args)
{
ArrayList al = new ArrayList(3);//定义的一个动态数组且初始数组元素个数为3个
Console.WriteLine("未添加前al的元素个数为:"+al.Count);
al.Add("abc");
al.Add("xyz");
al.Add("opq");
Console.WriteLine("调用Add方法后al的元素个数为:"+al.Count);
string[] last = { "def", "ghj" };
al.AddRange(last);
Console.WriteLine("调用AddRange方法后al的元素个数为:"+al.Count);
foreach (string item in al)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
输出的结果为:未添加前al的元素个数为:0
调用Add方法后al的元素个数为:3
调用AddRange方法后al的元素个数为:5
abc xyz opq def ghj(每一行输出一个)
二、ArrayList元素的删除
ArrayList提供了四种方法用于从ArrayList中删除元素。这四种方法是Remove,RemoveAt,RemoveRange方法和Clear方法。
Remove方法接受一个object类型值的参数,用于移除指定元素值的第一个匹配集合元素。其格式为:ArrayList 对象.Remove(值)
RemoveAt方法接受一个int类型的参数,用于删除指定索引的集合元素。其格式为:ArrayList 对象.RemoveAt(索引)
RemoveRange方法从集合中移除一定范围的元素。其格式为: ArrayList 对象.RemoveRange(开始索引,要删除的个数)
Clear方法清除所有的元素。
例二、用上述的方法实现对元素的删除
using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 动态数组的使用
{
class Program
{
static void Main(string[] args)
{
ArrayList al = new ArrayList(3);//定义的一个动态数组且初始数组元素个数为3个
al.Add("abc");
al.Add(50);
al.Add(10);
string[] last = { "def", "ghj" };
al.AddRange(last);
Console.WriteLine("未删除前al的元素个数为:" + al.Count);
al.RemoveAt(2);//删除索引为2后的元素
Console.WriteLine("删除索引为2后的元素个数为:"+al.Count);
al.Remove("abc");//删除第一个值为abc的项
Console.WriteLine("删除值为abc后的元素个数为:"+al.Count);
al.RemoveRange(1,2);//删除自索引为1的两个元素
Console.WriteLine("删除自索引为1的两个元素后的元素个数:"+al.Count);
foreach (string item in al)//因为此对象中的元素类型不一致所以为object类型
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
输出的结果为:未删除前al的元素个数为:5
删除索引为2后的元素个数为:4
删除值为abc后的元素个数为:3
删除自索引为1的两个元素后的元素个数:1
xyz
三、ArrayList元素的查找
ArrayList元素的查找提供了三个方法查找ArrayList中的元素,分别是IndexOf方法,LastindexOf方法和BinarySearch方法。
(1)、IndexOf方法从前后搜素指定的字符串,如果找到,返回匹配的第一项的自0开始的索引,否则返回-1。其格式为:ArrayList 对象.IndexOf(要索引的字符串)
(2)、LastIndexOf方法从后向前搜素指定的字符串,如果找到,返回匹配的最后一项自0开始的索引,否则返回-1.其格式为:ArrayList 对象.LastIndexOf(要索引的字符串)
以上两个方法都有三个重载版本,表示从指定的索引处开始搜索或者是从指定索引处搜素指定长度的字符串。
(3)、BinarySearch方法使用二分算法从集合中指定的值,并返回找到的从0开始的索引,否则返回-1,其格式为:ArrayList 对象.BinarySearch(要索引的字符串)
例三、使用上述的方法查找指定的元素
using System;
using System.Collections;//需要添加的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 动态数组的使用
{
class Program
{
static void Main(string[] args)
{
string[] str = { "a", "b", "c", "d", "d", "e", "f" };
ArrayList al = new ArrayList(str);
int i = al.IndexOf("c");//查找第一个字符c在数组中的位置
Console.WriteLine("元素c在集合中的位置是:"+i);
i = al.LastIndexOf("d");//查找最后一个字符d在数组中的位置
Console.WriteLine("元素d在集合中的位置是:" + i);
int j = al.BinarySearch("f");//查找元素f在数组中的位置
if (j>0)
{
Console.WriteLine("元素f在数组中的位置是:"+j);
}
else
{
Console.WriteLine("没有找到a");
}
Console.ReadLine();
}
}
}
输出的结果为:元素c在集合中的位置是:2
元素d在集合中的位置是:3
元素f在数组中的位置是:5
四、ArrayList元素的遍历
在执行上述程序的过程中已经使用foreach语句进行ArrayList元素的遍历,在这里就不再举例进行说明。


猜你喜欢
- 文章描述以下主要还是使用到了ffmpeg命令,分别实现了给视频添加图片水印以及文字水印。开发环境.NET Framework版本:4.5开发
- 背景:写一个用户登录拦截,在网上找了一圈没找到好用的,于是自己试验了一下,总结出来,分享给大家。1.自定义登录 * LoginInterce
- 本文实例讲述了C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法,在项目开发中有一定的实用价值,具体方法如下:一、前言
- 数据表格能够清晰的呈现数据信息,但是我们对于一些繁杂多变的数据想要很直观的看到数据变化走势或者数据的占比时,数据图表会更具代表性,并且在呈现
- Arrays 类提供了一个 fill() 方法,可以在指定位置进行数值填充。fill() 方法虽然可以填充数组,但是它的功能有限制,只能使用
- sms4j 2.0 全新来袭即sms-aggregation成功加入dromara之后,很多人向我们反应了项目名称太长不好记,也太绕口, 在
- 新建工程,新建Module新建一个工程,之后按下图中的操作方式,创建一个Module创建 Android Library选中 Android
- 目录1.搭建环境2.项目搭建3.配置maven4.项目结构5.配置 MapperScan 注解6.创建实体7.创建接口8.测试8.1 upd
- Commons Beanutils是Apache开源组
- 一:Java创建线程方式继承Thread类或者实现Runnable接口。但是Runnable 的 run() 方法是不带返回值的,那如果我们
- 只需要在控件TextBox的keypress事件中写入如下代码即可满足要求:代码如下:if (e.KeyChar == '.'
- 最近在项目中用到一个比较有意思的阴影特效从上面的效果图上可以发现在图片的右、下有一个阴影的特效,通过这个阴影效果明显会使得这个提示文本有一种
- 前言众所周知在spring boot内,设置session过期时间只需在application.properties内添加server.se
- 前言人类建造迷宫已有5000年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行走,寻找真相
- 可能也有其他方法,比如用 WGet 等等,但是 推荐用 PowerShell ,为什么呢,因为 PowerShell 太强大呗PowerSh
- 1.注解的理解1)注解(Annotation)也被称为元数据(Metadata),用于修饰解释包. 类、方法、属性、构造器、局部变量等数据信
- 1. 接口是一种规范很好,你已经知道接口是一种规范了!下面这张图是我们生活中遇到的接口:电源插座接口。2. 为什么需要规范呢?因为
- 前言如果你玩过三国志这种类型的战旗游戏或者模拟城市、部落冲突、海岛奇兵这种模拟经营类的游戏,那么你对网格地图一定不会陌生。在这些游戏中,所有
- 本文实例讲述了C#使用linq语句查询数组中以特定字符开头元素的方法。分享给大家供大家参考。具体如下:下面的代码查询数组中以字母k开头的元素
- //创建站点地图 private void Create