集合类之ArrayList类知识点和思考练习

知识点

集合是一种特殊的类,和数组一样,可以通过索引访问集合中的元素,不同的是,集合的大小可以动态改变,而且集合的元素可以在运行时添加和移除。集合类定义为
System.Collections或System.Collections.Generic命名空间的一部分。System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希
表和字典)的集合。

一、ArrayList类
不固定大小的对象数组(Array类相当于是固定大小的对象数组),按照索引来访问。创建ArrayList的实例:ArrayList 对象名=new ArrayList();

部分公共属性  
Capacity  获取或设置 ArrayList 可包含的元素数。
public virtual int Capacity { get; set; }

Count  获取 ArrayList 中实际包含的元素数。
public virtual int Count { get; }

IsFixedSize  获取一个值,该值指示 ArrayList 是否具有固定大小。
public virtual bool IsFixedSize { get; }
IsReadOnly  获取一个值,该值指示 ArrayList 是否为只读。
public virtual bool IsReadOnly { get; }

Item  获取或设置指定索引处的元素。
public virtual Object this [
    int index
] { get; set; }

部分方法
Add  将对象添加到 ArrayList 的结尾处。
public virtual int Add (
    Object value
)

Clear  从 ArrayList 中移除所有元素。 
public virtual void Clear ()

Contains  确定某元素是否在 ArrayList 中。
public virtual bool Contains (
    Object item
)

CopyTo  已重载。 将 ArrayList 或它的一部分复制到一维数组中。
ArrayList.CopyTo (Array)  从目标数组的开头开始将整个 ArrayList 复制到兼容的一维 Array 中。 
因为是整个复制,所以Array的长度一定要大于等于ArrayList的长度
ArrayList.CopyTo (Array, Int32)  从目标数组的指定索引处开始将整个 ArrayList 复制到兼容的一维 Array。
第二个参数是目标Array开始复制的索引,因为是整个复制,所以Array开始复制的位置到末尾的长度一定要大于ArrayList的长度
ArrayList.CopyTo (Int32, Array, Int32, Int32)  从目标数组的指定索引处开始,将一定范围的元素从 ArrayList 复制到兼容的一维 Array 中。
第一个参数是源ArrayList开始被复制的索引,第二个参数是目标Array,第三个参数是目标Array开始复制的索引,第四个参数是复制的元素数

Equals   已重载。 确定两个 Object 实例是否相等。 (从 Object 继承。)

IndexOf  已重载。 返回 ArrayList 或它的一部分中某个值的第一个匹配项的从零开始的索引。
ArrayList.IndexOf (Object)  搜索指定的 Object,并返回整个 ArrayList 中第一个匹配项的从零开始的索引。
ArrayList.IndexOf (Object, Int32)  搜索指定的 Object,并返回 ArrayList 中从指定索引到最后一个元素的元素范围内第一个匹配项的从零开始的索引。 
ArrayList.IndexOf (Object, Int32, Int32)  搜索指定的 Object,并返回 ArrayList 中从指定的索引开始并包含指定的元素数的元素范围内第一个匹配项的从零开始的索引。 
ArrayList.IndexOf (Object)  搜索指定的 Object,并返回整个 ArrayList 中第一个匹配项的从零开始的索引。 
public virtual int IndexOf (
    Object value
)

Insert  将元素插入 ArrayList 的指定索引处。 
public virtual void Insert (
    int index,
    Object value
)

LastIndexOf  已重载。 返回 ArrayList 或它的一部分中某个值的最后一个匹配项的从零开始的索引。

Remove  从 ArrayList 中移除特定对象的第一个匹配项。
public virtual void Remove (
    Object obj
)

RemoveAt  移除 ArrayList 的指定索引处的元素。 
public virtual void RemoveAt (
    int index
)

RemoveRange  从 ArrayList 中移除一定范围的元素。
public virtual void RemoveRange (
    int index,
    int count
)

Reverse  已重载。 将 ArrayList 或它的一部分中元素的顺序反转。
ArrayList.Reverse ()  将整个 ArrayList 中元素的顺序反转。
ArrayList.Reverse (Int32, Int32)  将指定范围中元素的顺序反转。
public virtual void Reverse (
    int index,
    int count
)

Sort  已重载。 对 ArrayList 或它的一部分中的元素进行排序。 

TrimToSize  将容量设置为 ArrayList 中元素的实际数目。 
public virtual void TrimToSize ()

 

思考练习

using System;
using System.Collections;
namespace ArrayListNameSpace
{
    public class ArrayListClass
    {
        public static void PrintArrayList(ArrayList arrVar)//输出ArrayList对象的所有元素
        {
            foreach (object obVar in arrVar)
            {
                Console.Write("{0}{1}", obVar, " ");
            }
            Console.WriteLine();
        }
        static void Main()
        {
            ArrayList arrayList1 = new ArrayList();
            //int i1=1,i2=2,i3=3,i4=4,i5=5,i6=6,i7=7;
            //                        object o1; 
            ArrayList arrayList2 = new ArrayList();

            arrayList1.Add(1);
            arrayList1.Add(2);
            arrayList1.Add("hello");
            arrayList1.Add("world");
            arrayList1.Add(5);
            arrayList1.Add('a');
            arrayList1.Add(7);
            arrayList1.Add(8);
            Console.WriteLine("arrayList1的容量(可以包含的元素个数)是:{0};实际包含的元素个数是:{1}", arrayList1.Capacity, arrayList1.Count);
            PrintArrayList(arrayList1);
            if (arrayList1.Contains(7))
                Console.WriteLine("对象7存在");

            arrayList2.Add("C#");
            arrayList2.Add("Good!");
            //arrayList1.Insert(5,arrayList2);//将把arrayList2的所属类型即ArrayList插入,而不会将所有对象元素插入,要插入对象元素,请按下面的语句
            arrayList1.Insert(5, arrayList2[1]);//与Array类的差别,Array类用GetValue获取值,ArrayList用[]获取元素值
            Console.Write("插入后值为");
            PrintArrayList(arrayList1);
            Console.WriteLine();
            arrayList1.Remove(2);
            Console.Write("删除后值为");
            PrintArrayList(arrayList1);
            Console.WriteLine();
            Console.Write("arrayList2的容量是{0}", arrayList2.Capacity);
            arrayList2.TrimToSize();
            Console.WriteLine("用过TrimToSize方法后,容量为{0}", arrayList2.Capacity);
            Console.ReadLine();
        }
    }
}
posted on 2009-09-21 23:24  友闻语上  阅读(384)  评论(0编辑  收藏  举报