文档章节

学用 ASP.Net 之 System.Collections.ArrayList 类

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 961
阅读 38
收藏 0

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);
}

本文转载自:http://www.cnblogs.com/del/archive/2011/01/06/1925748.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
和牛腩学编程路线图

把之前录的视频整理了一下,把其中一些自己觉得满意的抽出来,做成一个学习路线图 没有录制的视频就是2017年的录制计划了,不知道能不能学得进,正在把一些视频逐步传到优酷上,当然是不清晰...

niunan
2017/01/01
0
0
ASP.net与JavaEE语法、内置对象的对比

1 各自的HelloWord版本 1.1 ASP <% Response.Write("hello asp") %> 文件名为test.asp。 1.2 ASP.net <%@ page Language="C#" %> <% Response.Write("hello asp.net"); %> 文件名为test.aspx......

流浪的狗
2017/12/24
0
0
ASP.NET 应用程序生命周期概述

来源:MSDN ASP.NET 应用程序生命周期概述 本主题概述应用程序生命周期,列出重要的生命周期事件,并描述如何编写适合应用程序生命周期的代码。在 ASP.NET 中,若要对 ASP.NET 应用程序进行初...

夏春涛
2008/01/23
0
0
.NET Core开发日志——从ASP.NET Core Module到KestrelServer

ASP.NET Core程序现在变得如同控制台(Console)程序一般,同样通过Main方法启动整个应用。而Main方法要做的事情很简单,创建一个WebHostBuilder类,调用其Build方法生成一个WebHost类,最后启...

Ken.W
07/14
0
0
Asp.Net MVC3 简单入门第一季(五) 通过Asp.Net MVC的区域功能实现将多个MVC项目部署到一个站点

引子 本文将主要演示怎么将多个Asp.Net MVC项目部署到一个IIS站点中的例子,主要使用的是Asp.Net MVC提供的区域的功能。 Asp.Net MVC提供了区域的功能,可以很方便的为大型的网站划分区域。可...

aicoder
2011/10/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
11
0
vm GC 日志 配置及查看

-XX:+PrintGCDetails 打印 gc 日志 -XX:+PrintTenuringDistribution 监控晋升分布 -XX:+PrintGCTimeStamps 包含时间戳 -XX:+printGCDateStamps 包含时间 -Xloggc:<filename> 可以将数据保存为......

Canaan_
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部