学用 ASP.Net 之 System.Collections.ArrayList 类
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 类的更多相关文章
- 对象数组自定义排序--System.Collections.ArrayList.Sort()
使用System.Collections.ArrayList.Sort()对象数组自定义排序 其核心为比较器的实现,比较器为一个类,继承了IComparer接口并实现int IComparer.Com ...
- C# System.Collections.ArrayList
using System; using System.Collections; public class SamplesArrayList { public static void Main() { ...
- System.Collections.Generic.List<T> 与 System.Collections.ArrayList
[推荐] System.Collections.Generic.List<T> [原因] 泛型集合类List<T>在操作值类型的集合时可以不进行 装箱/拆箱 处理. 使得性能较 ...
- 学用 ASP.Net 之 System.Math 类
本文来自:http://www.cnblogs.com/del/archive/2011/01/03/1924746.html 成员: /* 字段 */ Math.E; //2.7182 ...
- 关于System.Collections空间
System.Collections命名空间包含可使用的集合类和相关的接口,提供了集合的基本功能. 该命名空间下的.NET非泛型集合类如下所示: — System.Collections.ArrayL ...
- C#:system.collections.generic(泛型)
1. array是一个固定长度的,如果要动态的存储的话就不行了,虽然 System.Collections.ArrayList(),是一个动态的存储的容器,但是没有对存储中的数据进行一个约束,所以非泛 ...
- 集合 ArrayList 类
集合的基本信息: System.Collections 系统类中的收藏类,定义各种对象(如列表,队列,位数组,哈希表和字典)的集合 常用的集合为ArrayList类:特殊集合一般会用到Queue队 ...
- ArrayList动态数组System.Collections命名空间下
using System.Collections; namespace myspace { class myclass { ArrayList myList=new ArrayList(); } }
- FCL研究-集合- System.Collections 接口和对象集合
[目录] 发现自己已经有很长一段时间写代码没什么进步了,随便读读FCL的源码,看看之前一直用的方法是如何实现的,也顺便提高下自己.FCL很是庞大,很难下口,于是用最笨的办法,先看常见的命名空间,逐个展 ...
随机推荐
- django考点
django考点 1 列举Http请求中常见的请求方式2 谈谈你对HTTP协议的认识.1.1 长连接3 简述MVC模式和MVT模式4 简述Django请求生命周期5 简述什么是FBV和CBV6 谈一谈 ...
- 一篇文章教你如何部署.NET Core WPF应用,你还在等什么?
DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...
- 表达式* ptr ++和++ * ptr是否相同?
两种表达都不同.让我们看一个示例代码来理解两个表达式之间的区别. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> int m ...
- HDU 5451——递推式&&循环节
题意 设 $y = (5+2\sqrt 6)^{1+2^x}$,给出 $x, M$($0\leq x \leq 2^{32}, M \leq 46337$),求 $[y]\%M$. 分析 由通项推递推 ...
- 03_mysql-python模块, linux环境下python2,python3的
---恢复内容开始--- 1.Python2 正常 [root@IP ~]# pip install mysql-python DEPRECATION: Python 2.7 will reach t ...
- react 后台(一)react + redux + react-route + webpack+ axios + antd+styled-components(替代less)
create-react-app my-admin 项目技术栈 react + redux + react-route + webpack+ axios + antd+styled-component ...
- MySQL数据分析-(10)SQL基础操作之表操作
大家好,我是jacky,很高兴跟大家继续分享MySQL数据分析实战课程,前面我们学习了库层面增删改查的SQL语句,这次课jacky将给大家介绍表层面的增删改查, (一)本课时的学习逻辑 表层面的增删改 ...
- Are Lights Still On?
不知不觉成为一名OIer已经接近一年了,但真正开始认真对待还是这个暑假,从当初的信心百倍,踌躇满志,到现在陷入了迷茫. 我不知道自己是否真的热爱OI这项事业,可我不愿放弃:我也不知道自己还有没有继续学 ...
- 记录下我用Jenkins打包碰到的坑
使用Andorid Studio 打包都是正常的,但是使用Jenkins自动打包一直报错,尝试过网上的各种方案,依然都不行,报错如下. FAILURE: Build failed with an ex ...
- Flask 四种响应类型
1 直接返回字符串 可以返回状态码 @app.route('/testresponse', methods=['GET', 'POST']) def testresponse(): return &q ...