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
=============
移除所有元素
遍历元素
=============
=============