C#动态数组ArrayList
在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组。
一、ArrayList类的常用属性和方法
1. ArrayList类的常用属性

2. ArrayList类的常用方法

二、ArrayList类与Array类的区别
?ArrayList类实际上是Array类的优化版本。
?ArrayList只能定义一维数组,Arrays可以定义多维数组。
?ArrayList的下限始终为0,Array可以定义自己的下限。
?ArrayList的元素都是object类型的,因此需要进行装箱和拆箱操作,内存分配的代价很高,而Array的元素通常是特定类型的。
?ArrayList的元素个数可以自动扩展,Array的元素个数是固定的。
?ArrayList具有添加、删除、插入、移动和复制等方法。
三、示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections; // 导入ArrayList的命名空间
namespace Test
{
class Program
{
static void Main(string[] args)
{
// C#动态数组ArrayList-www.baike369.com
ArrayList alist = new ArrayList();
alist.Add("One"); // 添加对象
alist.Add(" Two");
Console.Write("给数组添加的元素:");
foreach (Object obj in alist)
{ Console.Write(obj); }
Console.WriteLine();
Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
alist.Insert(1, " c#"); // 在指定的索引位置插入元素C#
Console.Write("在索引值为1的位置插入:");
foreach (Object obj in alist)
{ Console.Write(obj); }
Console.WriteLine();
Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
alist.Add("。");
Console.WriteLine("添加。");
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
alist.Add("---"); // 集合容量不够时,会出现位数的变化
Console.WriteLine("添加---");
Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
// 用索引方式获取集合元素值
Console.WriteLine("3号索引的:" + alist[3]);
// 利用contains方法,查找集合中是否包含“?”
Console.WriteLine("数组中是否包含?:" + alist.Contains("?"));
Console.Write("经过前面操作后的数据元素:");
foreach (Object obj in alist)
{ Console.Write(obj); }
Console.WriteLine();
Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
alist.Remove("。"); // 移除集合中的“。”元素
alist.Remove("?"); // 移除集合中的“?”元素
Console.WriteLine("没有包含?,减少1个元素,容量不变");
foreach (Object obj in alist)
{ Console.Write(obj); }
Console.WriteLine();
Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
alist.RemoveAt(3); // 移除3号索引位的元素
Console.Write("移除3号索引位的元素:");
foreach (Object obj in alist)
{ Console.Write(obj); }
Console.WriteLine();
Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
alist.TrimToSize(); // 缩减容量
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
alist.Clear(); // 清除ArrayList中的所有元素
Console.WriteLine("清除ArrayList中的所有元素后:");
Console.WriteLine("实际包含的数组元素个数:" + alist.Count);
Console.WriteLine("目前能够包含的数组元素的最多个数:"+alist.Capacity);
alist.TrimToSize(); // 再次缩减容量
Console.WriteLine("再次缩减容量后,能够包含的数组元素的最多个数:"
+alist.Capacity);
Console.ReadLine();
}
}
}
运行结果:

C#动态数组ArrayList的更多相关文章
- 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...
- [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...
- C#动态数组ArrayList和List<T>的比较
C#中一维动态数组(即列表)分ArrayList和List<T>两种,其容量可随着我们的需要自动进行扩充 一.ArrayList类(少用) ArrayList位于System.Collec ...
- 关于C#中的动态数组ArrayList
在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类与Array类的区别 ArrayList类实 ...
- C# 集合类(一)动态数组ArrayList
C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...
- 动态数组 - ArrayList
前言 如果数组的大小要随时间变化,那么数组操作起来就比较麻烦. 在C++中,这种情况要用到动态向量Vector. 而Java中,提供了一种叫做ArrayList的泛型数组结构类型,提供相似的作用. 其 ...
- 动态数组ArrayList的使用
1.定义类 package com.realhope.rmeal.bean; /** * * @author Wucy * 菜谱类 */ public class Menu{ private Inte ...
- C#深入研究ArrayList动态数组自动扩容原理
1 void Test1() { ArrayList arrayList = new ArrayList(); ; ; i < length; i++) { arrayList.Add(&quo ...
- 常用数据结构-线性表及Java 动态数组 深究
[Java心得总结六]Java容器中——Collection在前面自己总结的一篇博文中对Collection的框架结构做了整理,这里深究一下Java中list的实现方式 1.动态数组 In compu ...
随机推荐
- JAVA之动态编译
通过Java动态生成class文件 今天说下JAVA中的动态编译,这个功能根据我现在的了解好像没有见到过用的,我Jio的吧,现在的一些在线代码编缉器可以用到了,这个具体我也不是很清楚.感兴趣的大家可以 ...
- 笔记-迎难而上之Java基础进阶2
Set集合 import java.util.*; public class HashSetDemo{ public static void main(String[] args){ //Set接口的 ...
- Sanic框架
Sanic框架 1. 入门 Sanic 是一款类似Flask的Web服务器,它运行在Python 3.5+上. 除了与Flask功能类似之外,它还支持异步请求处理,这意味着你可以使用Python3.5 ...
- Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) A
Arpa is researching the Mexican wave. There are n spectators in the stadium, labeled from 1 to n. Th ...
- 不可见类有抽象父类,spring配置子类bean,注入父类,aop就可以切父类的方法
public class TestBeanChild { int b = 1; public TestBean createDefault() { return new TestBeanDefault ...
- 爬虫(cookie)——renren模拟登陆
工具:python3 步骤: 1)使用cookiejar.CookieJar()构建一个CookieJar()构建一个对象,用来保存cookie的值 2)使用HTTPCookieProcessor() ...
- TDH-常见运维指令
1.查看cpu: cat /proc/cpuinfo | grep processor2.查看磁盘:df -h (查看磁盘使用率) df -i (查看iNode使用) fdisk -l (查看磁盘整体 ...
- 网页抓取解析,使用JQuery选择器进行网页解析
最近开发一个小功能,数据库中一个基础表的数据从另一个网站采集. 因为网站的数据不定时更新,需要更新后自动采集最新的内容. 怎么判断更新数据没有? 好在网站有一个更新日志提示的地方,只需要对比本地保留的 ...
- windows 2008 r2或win7安装SP1补丁,安装sqlserver 2012
说明:安装sql server 2012时,win7和win2008r2系统都需要打sp1补丁. 1.SP1补丁下载地址(建议用迅雷下载): http://download.microsoft.com ...
- 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(下)
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/12/es-code03/ 前提 上篇文章写完了 ES 流程启动的一部分,main 方法都入 ...