ArrayList 是 .Net 的动态数组.


主要成员:


/* 静态方法 */
ArrayList.Adapter() //把其他 IList 对象包装为 ArrayList 使用
ArrayList.FixedSize() //包装为固定容量
ArrayList.ReadOnly() //包装为只读
ArrayList.Repeat()  //根据指定次数的重复值创建 ArrayList /* 属性 */
Capacity  //容量
Count  //元素数
IsFixedSize //是否被包装为固定容量?
IsReadOnly //是否被包装为只读? /* 方法 */
Add()    //添加
AddRange()  //添加一个集合
BinarySearch() //使用二分法快速查找, 查找前须先排序; 找不到会返回一个 <0 的整数
Clear()    //清除
Contains()  //是否包含指定元素
CopyTo()  //复制到指定数组, 要求类型兼容
GetRange()  //截取
IndexOf()  //获取指定元素的首次出现的索引
Insert()  //插入
InsertRange() //插入一个集合
LastIndexOf() //获取指定元素的最后出现的索引
Remove()  //移除指定元素
RemoveAt()  //移除指定索引的元素
RemoveRange() //移除指定范围的元素
Reverse()  //翻转, 可指定要翻转的范围
SetRange()  //把指定集合复制过来
Sort()    //排序, 可指定要排序范围和排序器
ToArray()  //复制到新数组, 可同时进行类型转换
TrimToSize() //优化容量(Capacity = Count)

元素值可以是不同类型、可重复、可为 null:


protected void Button1_Click(object sender, EventArgs e)
{
  ArrayList arr = new ArrayList();
  arr.Add("ABC");
  arr.Add(123);
  arr.Add(3.14);
  arr.Add(null);
  arr.Add(null);   string s = arr[0].ToString();
  int n = (int)arr[1];
  double f = (double)arr[2];   TextBox1.Text = string.Concat(s, ", ", n, ", ", f); //ABC, 123, 3.14
  //TextBox1.Text = string.Concat(arr[0], ", ", arr[1], ", ", arr[2]); //同上
}

ArrayList.Repeat()、AddRange() 及遍历:


protected void Button1_Click(object sender, EventArgs e)
{
  ArrayList arr1 = ArrayList.Repeat("AAA", 3);
  ArrayList arr2 = ArrayList.Repeat("BBB", 4);   arr1.AddRange(arr2);   string s1, s2;
  s1 = s2 = "";   foreach (var x in arr1) {
    s1 += x.ToString() + " ";    //AAA AAA AAA BBB BBB BBB BBB
  } 
   
  for (int i = 0; i < arr1.Count; i++) {
    s2 += arr1[i].ToString() + " ";  //AAA AAA AAA BBB BBB BBB BBB
  }   TextBox1.Text = s1 + "\n" + s2;
}

GetRange()、SetRange():


protected void Button1_Click(object sender, EventArgs e)
{
  ArrayList arr1 = new ArrayList(6); //指定容量
  arr1.Add(1);
  arr1.Add(2);
  arr1.Add(3);
  arr1.Add(4);
  arr1.Add(5);
  arr1.Add(6);   ArrayList arr2 = arr1.GetRange(2, 3);
  string s1 = string.Join(", ", arr2.ToArray()); //3, 4, 5   arr1.SetRange(3, arr2); //arr2 中的元素将覆盖到 arr1 的指定位置, arr1 中须有位置才行
  string s2 = string.Join(", ", arr1.ToArray()); //1, 2, 3, 3, 4, 5   TextBox1.Text = s1 + "\n" + s2;
}

翻转与排序:


protected void Button1_Click(object sender, EventArgs e)
{
  ArrayList arr = new ArrayList(10); //指定容量
  arr.Add(1);
  arr.Add(3);
  arr.Add(5);
  arr.Add(7);
  arr.Add(9);
  arr.Add(2);
  arr.Add(4);
  arr.Add(6);
  arr.Add(8);
  arr.Add(0);   arr.Reverse();
  string s1 = string.Join(", ", arr.ToArray()); //0, 8, 6, 4, 2, 9, 7, 5, 3, 1   arr.Reverse(0, arr.Count / 2);
  string s2 = string.Join(", ", arr.ToArray()); //2, 4, 6, 8, 0, 9, 7, 5, 3, 1   arr.Sort();
  string s3 = string.Join(", ", arr.ToArray()); //0, 1, 2, 3, 4, 5, 6, 7, 8, 9   TextBox1.Text = s1 + "\n" + s2 + "\n" + s3;
}

插入与删除:


protected void Button1_Click(object sender, EventArgs e)
{
  ArrayList arr = new ArrayList(9); //指定容量
  for (int i = 0; i < arr.Capacity; ) { arr.Add(++i); }   string s1 = string.Join(", ", arr.ToArray()); //1, 2, 3, 4, 5, 6, 7, 8, 9   arr.Insert(0, "A");
  string s2 = string.Join(", ", arr.ToArray()); //A, 1, 2, 3, 4, 5, 6, 7, 8, 9   arr.Remove("A"); //有重复元素时, 删前面的
  string s3 = string.Join(", ", arr.ToArray()); //1, 2, 3, 4, 5, 6, 7, 8, 9   arr.RemoveAt(arr.Count -1);
  string s4 = string.Join(", ", arr.ToArray()); //1, 2, 3, 4, 5, 6, 7, 8   arr.RemoveRange(4, 3);
  string s5 = string.Join(", ", arr.ToArray()); //1, 2, 3, 4, 8   arr.InsertRange(3, ArrayList.Repeat("A", 3));
  string s6 = string.Join(", ", arr.ToArray()); //1, 2, 3, A, A, A, 4, 8   TextBox1.Text = s1 + "\n" + s2 + "\n" + s3 + "\n" + s4 + "\n" + s5 + "\n" + s6;
}

IndexOf()、LastIndexOf():


protected void Button1_Click(object sender, EventArgs e)
{
  char[] charArr = "google".ToCharArray();
  ArrayList arr = new ArrayList(charArr); //其建立参数可以是一个 ICollection   string s1 = string.Join(", ", arr.ToArray()); //g, o, o, g, l, e   int n1 = arr.IndexOf('g');  //0
  int n2 = arr.LastIndexOf('g'); //3   TextBox1.Text = string.Concat(s1, "\n", n1, "\n", n2); 
}

BinarySearch():


protected void Button1_Click(object sender, EventArgs e)
{
  string[] strArr = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" };
  ArrayList arr = new ArrayList(strArr);   arr.Sort();
  int i = arr.BinarySearch("nine");      //3
  string str = string.Join(", ", arr.ToArray()); //eight, five, four, nine, one, seven, six, ten, three, two   TextBox1.Text = string.Concat(i, "\n", str);
}

FixedSize()、ReadOnly()、IsFixedSize、IsReadOnly:


protected void Button1_Click(object sender, EventArgs e)
{
  ArrayList arr = new ArrayList();   arr.Add("one");
  arr = ArrayList.FixedSize(arr);   try { arr.Add("two"); }
  catch (Exception err) { Response.Write(err.Message); }        //集合的大小是固定的。
  finally { TextBox1.Text = "FixedSize = " + arr.IsFixedSize.ToString(); } //FixedSize = True
} protected void Button2_Click(object sender, EventArgs e)
{
  ArrayList arr = ArrayList.Repeat("000", 3);   arr[0] = "AAA";
  bool b1 = arr.IsReadOnly;  //False
  arr = ArrayList.ReadOnly(arr);
  bool b2 = arr.IsReadOnly;  //True
  //arr[0] = "BBB";      //再赋值会异常   TextBox1.Text = string.Concat(b1, "\n", b2);
}

学用 ASP.Net 之 System.Collections.ArrayList 类的更多相关文章

  1. 对象数组自定义排序--System.Collections.ArrayList.Sort()

    使用System.Collections.ArrayList.Sort()对象数组自定义排序 其核心为比较器的实现,比较器为一个类,继承了IComparer接口并实现int IComparer.Com ...

  2. C# System.Collections.ArrayList

    using System; using System.Collections; public class SamplesArrayList { public static void Main() { ...

  3. System.Collections.Generic.List<T> 与 System.Collections.ArrayList

    [推荐] System.Collections.Generic.List<T> [原因] 泛型集合类List<T>在操作值类型的集合时可以不进行 装箱/拆箱 处理. 使得性能较 ...

  4. 学用 ASP.Net 之 System.Math 类

    本文来自:http://www.cnblogs.com/del/archive/2011/01/03/1924746.html   成员: /* 字段 */ Math.E;      //2.7182 ...

  5. 关于System.Collections空间

    System.Collections命名空间包含可使用的集合类和相关的接口,提供了集合的基本功能. 该命名空间下的.NET非泛型集合类如下所示: — System.Collections.ArrayL ...

  6. C#:system.collections.generic(泛型)

    1. array是一个固定长度的,如果要动态的存储的话就不行了,虽然 System.Collections.ArrayList(),是一个动态的存储的容器,但是没有对存储中的数据进行一个约束,所以非泛 ...

  7. 集合 ArrayList 类

    集合的基本信息: System.Collections   系统类中的收藏类,定义各种对象(如列表,队列,位数组,哈希表和字典)的集合 常用的集合为ArrayList类:特殊集合一般会用到Queue队 ...

  8. ArrayList动态数组System.Collections命名空间下

    using System.Collections; namespace myspace { class myclass { ArrayList myList=new ArrayList(); } }

  9. FCL研究-集合- System.Collections 接口和对象集合

    [目录] 发现自己已经有很长一段时间写代码没什么进步了,随便读读FCL的源码,看看之前一直用的方法是如何实现的,也顺便提高下自己.FCL很是庞大,很难下口,于是用最笨的办法,先看常见的命名空间,逐个展 ...

随机推荐

  1. csrf简单明了( 转发)

    https://www.daguanren.cc/post/csrf-introduction.html csrf_token = request.META.get('CSRF_COOKIE') re ...

  2. 原生JS实现简单富文本编辑器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Java进阶知识20 Spring的代理模式

    本文知识点(目录): 1.概念  2.代理模式      2.1.静态代理      2.2.动态代理      2.3.Cglib子类代理 1.概念 1.工厂模式  2. 单例模式 代理(Proxy ...

  4. Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(困难版) 并查集

    题意 给一个$ n \times m$ 的网格,每个格子里有一个数字,非 \(0\) 即 \(1\),行从上往下依次编号为 \(1, 2, \cdots, n\),列从左往右依次编号为 \(1, 2, ...

  5. Luogu4191 [CTSC2010]性能优化【多项式,循环卷积】

    题目描述:设$A,B$为$n-1$次多项式,求$A*B^C$在系数模$n+1$,长度为$n$的循环卷积. 数据范围:$n\leq 5*10^5,C\leq 10^9$,且$n$的质因子不超过7,$n+ ...

  6. windows游戏编程了解消息事件模型

    本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22309265 作者:jadeshu   邮箱: jades ...

  7. 检查Object是否存在某个属性

    1. in 和 hasOwnProperty in会检查对象和它的整条原型链,hasOwnProperty只会检查对象本身,不会检查原型链 let a = {name: 'rick'} let b = ...

  8. MySQL数据分析-(5)数据库设计之ER模型

    大家好,我是jacky,很高兴跟大家分享本课时的内容,从本节课开始,就开始了我们第二章的学习,第一章我们抛出了若干问题,从第二章开始往后,都是解决问题的一个过程: 第一章的案例中,我们拿手机销售公司举 ...

  9. c语言 内存,可执行文件

    c语言代码与可执行文件的映射关系 函数中的代码 存储在.text 段中 已初始化的全局变量 存储在.data段 未初始化的全局变量 存储在.bss段中 程序类型 映射到file header中 面试题 ...

  10. HDU 4374 One hundred layer(单调队列DP)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=116242#problem/E 题意:差不多就是男人勇下百层的游戏.从第一层到最 ...