C# 学习记录 集合篇

ArrayList类 (动态数组)

ArrayList类 位于System.Collections命名空间下,它可以动态地添加和删除元素。可以将ArrayList类看 做扩充了功能的数组,但它并不等同于数组

构造方法

ArrayList() (默认空间大小为16位)

ArrayList(ICollection arrayName)

ArrayList(int length)

arrayName: 添加集合的数组名
**length: ** 指定的大小初始化

属性

属性 说明
Capacity 获取或设置 ArrayList 可包含的元素数。
Count 获取 ArrayList中实际包含的元素数。
IsFixedSize 获取一个值,该值指示 ArrayList 是否具有固定大小。
IsReadOnly 获取一个值,用于指示 ArrayList是否为只读。
IsSynchronized 获取一个值,该值指示是否同步对 ArrayList的访问(确保线程安全)。
Item 获取或设置指定索引处的元素。
SyncRoot 获取用于同步对 ArrayList的访问的对象。

常用方法

修饰符 方法 说明
int ArrayList.Add(Object) 将一个对象添加到 ArrayList 的末尾
void ArrayList.Insert(Int32 , Object) 将元素插入到 ArrayList 中的指定索引处
void ArrayList.Clear() 从 ArrayList 中删除所有元素
void ArrayList.Remove(Object) 从 ArrayList 中删除特定对象的第一个匹配项
void ArrayList.RemoveAt(Int32) 移除 ArrayList 的指定索引处的元素
void ArrayList.RemoveRange(Int32, Int32) 从 ArrayList 中移除一系列元素(前者为开始移除索引的位置,后者为要删除个数)
bool ArrayList.Contains(Object) 查找对象是否存在,存在为true,否则为false
static void Main(string[] args)
{
    
    
    ArrayList array1 = new ArrayList();
    int[] n = new int[] {
    
    1,2,3,4,5,6 };
    ArrayList array2 = new ArrayList(n);
    ArrayList array3 = new ArrayList(20);

    //添加对象
    array1.Add(1);
    array1.Add(2);
    array3.Add("12");
    array3.Add("111");
    array3.Add("22");
    array3.Add("23");
    array3.Add("24");
    array1.Insert(1 , "2");

    //遍历他们
    Console.WriteLine("===========他们的长度为!");
    Console.WriteLine("array1:");
    foreach (Object tmp in array1){
    
    
        Console.Write(tmp+" ");
    }

    Console.WriteLine("\nrray2:");
    foreach (Object tmp in array2)
    {
    
    
        Console.Write(tmp + " ");
    }

    Console.WriteLine("\narray3:");
    foreach (Object tmp in array3)
    {
    
    
        Console.Write(tmp + " ");
    }

    //移除array1对象
    array1.Clear();

    //移除array3对象的数值12
    array2.Remove(12);

    //移除array2对象索引5的位置
    array2.RemoveAt(5);

    //移除array3对象前面数值4个字符
    array3.RemoveRange(0 , 4);

    //查找元素
    Console.Write("\n===========array2是否存在2?{0}", array2.Contains(2));

    //遍历他们
    Console.WriteLine("\n===========他们的长度为!");
    Console.WriteLine("array1:");
    foreach (Object tmp in array1)
    {
    
    
        Console.Write(tmp + " ");
    }

    Console.WriteLine("\nrray2:");
    foreach (Object tmp in array2)
    {
    
    
        Console.Write(tmp + " ");
    }

    Console.WriteLine("\narray3:");
    foreach (Object tmp in array3)
    {
    
    
        Console.Write(tmp + " ");
    }

    Console.WriteLine("\nEND");
}

运行结果

===========他们的长度为!
array1:
1 2 2
rray2:
1 2 3 4 5 6
array3:
12 111 22 23 24
===========array2是否存在2?True
===========他们的长度为!
array1:

rray2:
1 2 3 4 5
array3:
24
END

Hashtable(哈希表)

Hashtable 用 键 / 值 来表示的集合,位于System.Collections命名空间下 , 这些 键 / 值 对根据键的哈希代码进行组织。每个元素都存储在DictionaryEntry对象中的 键 / 值 对。

构造方法

Hashtable()

Hashtable(int capacity)

capacity: Hashtable对象最初可包含的元素的近似数目

方法

修饰符 方法 说明
void Hashtable.Add(Object K, Object V) 添加 键 / 值 到Hashtable对象中(V可null)
void Hashtable.Clear() 移除所有元素
void Hashtable.Remove(Object K) 移除Hashtable对象中指定键的元素
bool Hashtable.Contains(Object key) 判断Hashtable对象中指定键是否存在
bool Hashtable.ContainsValue(Object value) 判断Hashtable对象中指定值是否存在(V可null)

遍历

Hashtable对象遍历需要到DictionaryEntry类型来进行。DictionaryEntry类型表示一个 键 / 值 对的集合
以下是使用例子

foreach(DictionaryEntry tmp in hashtable){
    
    //hashtable是Hashtable对象
    Console.WriteLine(tmp.Key+"\t"+tmp.Value);
}

例子:

static void Main(string[] args)
{
    
    
    Hashtable hash = new Hashtable();

    hash.Add(1 , "Tam");
    hash.Add(2 , "Sanscan12");
    hash.Add(3 , 223);
    hash.Add(4 , new Object());
    hash.Add(5 , true);

    //遍历元素
    Console.WriteLine("遍历元素\n============= ");
    foreach (DictionaryEntry tmp in hash)
    {
    
    //hash是Hashtable对象
        Console.WriteLine(tmp.Key + "\t" + tmp.Value);
    }
    Console.WriteLine("============= \n");

    //移除指定元素 通过K
    hash.Remove(1);
    Console.WriteLine("移除键 `1` ");

    //判断键的存在
    Console.WriteLine("键 `3` 是否存在?"+hash.Contains(3));

    //判断值的存在
    Console.WriteLine("值 `2223` 是否存在?"+hash.ContainsValue(2223));

    //遍历元素
    Console.WriteLine("\n遍历元素\n============= ");
    foreach (DictionaryEntry tmp in hash)
    {
    
    //hash是Hashtable对象
        Console.WriteLine(tmp.Key + "\t" + tmp.Value);
    }
    Console.WriteLine("============= ");


    hash.Clear();
    Console.WriteLine("移除所有元素");


    //遍历元素
    Console.WriteLine("\n遍历元素\n============= ");
    foreach (DictionaryEntry tmp in hash)
    {
    
    //hash是Hashtable对象
        Console.WriteLine(tmp.Key + "\t" + tmp.Value);
    }
    Console.WriteLine("============= ");
}

运行结果

遍历元素
=============
5       True
4       System.Object
3       223
2       Sanscan12
1       Tam
=============

移除键 `1`
键 `3` 是否存在?True
值 `2223` 是否存在?False

遍历元素
=============
5       True
4       System.Object
3       223
2       Sanscan12
=============
移除所有元素

遍历元素
=============
=============

猜你喜欢

转载自blog.csdn.net/weixin_45963193/article/details/107667899