java非泛型集合_非泛型集合和泛型集合

ArrayList

1、命名空间:

System.Collections

2、描述:

1)、表示可通过索引访问的对象的强类型列表;提供用于对列表进行搜索、排序和操作的方法。

2)、是ArrayList类的泛型等效类。

3)、可以使用一个整数索引访问此集合中的元素;索引从 零 开始。

4)、可以接收null空引用。

5)、允许重复元素

3、Capacity与Count

1)Capacity在需要调整大小之前可存储的元素数;Count实际存储的元素数。

2)Capacity总是大于或者等于Count

通过Reflector查看add()方法对Capacity和Count的影响:

4、遍历元素:

foreach (string s in myList)

{

Console.WriteLine("\n值: {0}", s);

}

5、ArrayList常用属性和方法:

Add(Object value)将对象添加到ArrayList的结尾处。并且返回值 为int。

Remove(Object value)将指定的元素删除,并且一次只删除一个。

RemoveAt(int index)将指定元素下标的值删除。

Insert(int index,Object Value)将指定的元素添加到指定的下标。

Contains(Object Value)判断指定的元素是否存在集合中,布尔返回值。

Clear()删除集合中的所有元素

Hashtable

1.命名空间

System.Collections

2.名称

哈希表(Hashtable)

3.描述

用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;

value用于存储对应于key的值。

Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

不能通过下标访问数据,双列集合是通过键访问值的。

4.Hashtable的常用属性和方法

Count   :获取键值对的数目

keys:键的集合

Values:值的集合

Add(Object key,Object Value):将指定的键和值的元素添加到集合中。

Remove(Object Key):移除带有指定键的元素

Clear():移除所有元素

5.遍历哈希表中的值

Hashtable只能用foreach遍历集合中的数据。

eg:

foreach(Object obj in ht.Values)

{

//遍历值

cw(se.Name);

}

或者

foreach(string key in ht.Keys)

{

//将键值对全部遍历出来

cw(ht[key]);

}

6 .对哈希表进行排序

对哈希表按key值重新排列的做法:

ArrayList akeys=newArrayList(ht.Keys);

akeys.Sort();//按字母顺序进行排序

foreach(string key inakeys)

{

Console.WriteLine(key+ ":" + ht[key]); //排序后输出

}

泛型集合

泛型是C#2.0的一个新特性。泛型引入一个概念:类型参数。是一个数据类型,可以是类类型,基本数据类型。通过使用类型参数

1.减少装箱和类型强转时的风险。

2.通过泛型可以最大限度的重用代码,保护类型的安全及提高性能,最常用的就是创建集合类,可以约束集合类中的元素类型。

List

1、命名空间:

System.Collections.Generic(程序集:mscorlib)

2、描述:

1)、表示可通过索引访问的对象的强类型列表;提供用于对列表进行搜索、排序和操作的方法。

2)、是ArrayList类的泛型等效类。

3)、可以使用一个整数索引访问此集合中的元素;索引从 零 开始。

4)、可以接收null空引用。

5)、允许重复元素

3、创建及初始化:

List myList = new List();//初始Capacity为 零

List myList2 = new List(30); //初始Capacity为 30

List myList3 = new List(new string[] { "1", "a", "2", "b" });//初始Capacity 为 4,并且元素已被复制

4、Capacity与Count

1)Capacity在需要调整大小之前可存储的元素数;Count实际存储的元素数。

2)Capacity总是大于或者等于Count

通过Reflector查看add()方法对Capacity和Count的影响:

5、遍历元素:

foreach (string s in myList)

{

Console.WriteLine("\n值: {0}", s);

}

6、ArrayList常用属性和方法:

Add(Object value)将对象添加到ArrayList的结尾处。并且返回值 为int。

Remove(Object value)将指定的元素删除,并且一次只删除一个。

RemoveAt(int index)将指定元素下标的值删除。

Insert(int index,Object Value)将指定的元素添加到指定的下标。

Contains(Object Value)判断指定的元素是否存在集合中,布尔返回值。

Clear()删除集合中的所有元素

集合初始化器:就是更简单的方法对集合中的元素赋值。

eg:

ArrayList list= newArrayList();

{new Book(){BookName="越狱"}//每一项用逗号隔开,最后一项不用逗号

,new Book(){BookName="爱情"}

,new Book(){BookName="故事"}

...

};

Dictionary

1.命名空间

System.Collections.Generic(程序集:mscorlib)

2.描述

用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;

value用于存储对应于key的值。

Dictionary中key,value键值对均为object类型,所以Dictionary可以支持任何类型的keyvalue键值对.

不能通过下标访问数据,双列集合是通过键访问值的。

4.Dictionary的常用属性和方法

Count   :获取键值对的数目

keys:键的集合

Values:值的集合

Add(Object key,Object Value):将指定的键和值的元素添加到集合中。

Remove(Object Key):移除带有指定键的元素

Clear():移除所有元素

5.遍历Dictionary中的值

Dictionary只能用foreach遍历集合中的数据。

eg:foreach(Object obj inht.Values)

{//遍历值

cw(obj .Name);

}

或者foreach(string key inht.Keys)

{//将键值对全部遍历出来

cw(ht[key]);

}foreach(keyvaluepair item inht)

{//将键值对全部遍历出来

cw(ht[key]);

cw(ht.value.name);

}

四.泛型和非泛型集合的区别

List与ArrayList的区别

相同点:

1.通过索引访问集合中的元素。

2.添加元素方法相同。Add(Object Value)

3.删除元素方法相同。RemoveAt(int index)或Remove(Object Value)

不同点:

List:对保存元素进行类型约束。

ArrayList:可以增加任何类型。

List:添加/读取值类型不用进行装箱,拆箱操作。

ArrayList:添加/读取值类型需要进行装箱,拆箱操作。

Dictionary和Hashtable的对比

相同点:

1.都通过Key获取Value

2.添加元素方法相同Add(Object Key,Object Value)

3.删除元素方法相同 Remove(Object Value)

4.遍历方法相同foreach

不同点:

Dictionary:对保存元素进行类型约束。

Hashtable:可以增加任何类型

Dictionary:添加/读取值类型元素无须装箱,拆箱。

Hashtable::添加/读取值类型元素需要拆箱,装箱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值