1.数组集合
其实,在数组的一节里面已经包含了这个概念了。其实数组集合就是 new int[2];
官方参考地址:http://msdn.microsoft.com/zh-cn/library/57yac89c(VS.80).aspx
2.ArrayList
ArrayList跟数组(Array)的区别:http://msdn.microsoft.com/zh-cn/library/41107z8a(VS.80).aspx
实例:
Code
<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Collections;
namespace
CSharp
{
public
class
TestArrayList
{
public
TestArrayList()
{
//
CreateanemptyArrayList,andaddsomeelements.
ArrayListstringList
=
new
ArrayList();
stringList.Add(
"
a
"
);
stringList.Add(
"
abc
"
);
stringList.Add(
"
abcdef
"
);
stringList.Add(
"
abcdefg
"
);
stringList.Add(
20
);
//
索引或者说数组下标是数字,所以不需要名字.
Console.WriteLine(
"
Element{0}is\
"
{
1
}\
""
,
2
,stringList[
2
]);
//
给下标为2的元素赋值
stringList[
2
]
=
"
abcd
"
;
Console.WriteLine(
"
Element{0}is\
"
{
1
}\
""
,
2
,stringList[
2
]);
//
输出stringList的总的元素个素
Console.WriteLine(
"
Numberofelementsinthelist:{0}
"
,
stringList.Count);
try
{
//
数组下标从0到count-1,如果尝试输出小于0或者大于等于count的下标,将抛出异常。
Console.WriteLine(
"
Element{0}is\
"
{
1
}\
""
,
stringList.Count,stringList[stringList.Count]);
}
catch
(ArgumentOutOfRangeExceptionaoore)
{
Console.WriteLine(
"
stringList({0})isoutofrange(越界).
"
,
stringList.Count);
}
//
不能使用这种方式来增加元素,只能通过stringList.add("aa")来增加元素
try
{
stringList[stringList.Count]
=
"
42
"
;
}
catch
(ArgumentOutOfRangeExceptionaoore)
{
Console.WriteLine(
"
stringList({0})isoutofrange(越界).
"
,
stringList.Count);
}
Console.WriteLine();
//
用for来循环
for
(
int
i
=
0
;i
<
stringList.Count;i
++
)
{
Console.WriteLine(
"
Element{0}is\
"
{
1
}\
""
,i,
stringList[i]);
}
Console.WriteLine();
//
用foreach来循环
foreach
(
object
o
in
stringList)
{
Console.WriteLine(o);
}
Console.ReadLine();
}
}
}
这里同时要提到StringCollection,其实这个跟ArrayList没啥区别,只不过StringCollection只能接收字符类型的东西。
官方地址:http://msdn.microsoft.com/zh-cn/library/system.collections.specialized.stringcollection(VS.80).aspx
3.List<T> ,这个我想才是我们最常用的。
官方参考地址:http://msdn.microsoft.com/zh-cn/library/6sh2ey19(VS.80).aspx
这个其实就是泛型结合数组的例子。
Code
<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
CSharp
{
public
class
TestList
{
//
默认构造函数
public
TestList()
{
//
声明语法,换句话说就是:定义objAppleList-集合变量的语法。
List
<
Apple
>
objAppleList
=
new
List
<
Apple
>
();
//
定义3个Apple类的实例(也叫对象)
AppleobjApple1
=
new
Apple();
objApple1.Color
=
"
red
"
;
objApple1.Weight
=
10
;
AppleobjApple2
=
new
Apple();
objApple2.Color
=
"
green
"
;
objApple2.Weight
=
12
;
AppleobjApple3
=
new
Apple();
objApple3.Color
=
"
black
"
;
objApple3.Weight
=
8
;
//
把3个Apple类的实例干到objAppleList里面去。
objAppleList.Add(objApple1);
objAppleList.Add(objApple2);
objAppleList.Add(objApple3);
//
遍历objAppleList这个集合.
foreach
(Appleo
in
objAppleList)
{
Console.WriteLine(
"
Coloris{0},Weightis{1}
"
,o.Color,o.Weight);
}
//
总的个数:
Console.WriteLine(
"
objAppleList的总个数是:{0}
"
,objAppleList.Count);
Console.ReadLine();
}
}
public
class
Apple
{
//
定义字段
private
string
_color
=
""
;
private
decimal
_weight
=
0
;
//
定义跟字段对应的属性
public
string
Color
{
get
{
return
_color;}
set
{_color
=
value;}
//
这里的value是C#关键字。表示外面传入的值.
}
public
decimal
Weight
{
get
{
return
_weight;}
set
{_weight
=
value;}
}
}
}
在这里:List
<
Apple
>
objAppleList
=
new
List
<
Apple
>
();,其实我们用数组也可以,如:Apple[] objAappArray = new Apple[3]; 但是数组的限制就是固定了大小。不能动态增加。
这里为什么不用ArrayList? 按道理,用ArrayList也可以,如:
Code
<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ArrayListobAppleArrayList
=
new
ArrayList();
obAppleArrayList.Add(objApple1);
obAppleArrayList.Add(objApple2);
obAppleArrayList.Add(objApple2);
我们不用的ArrayList的目的是保证类型安全。因为这个时候,你还可以
obAppleArrayList.Add("string");,
obAppleArrayList.Add("heihei");,这样
obAppleArrayList的元素就不是单纯的Apple类了。
我们最常用的也是List<T>.
4.Hashtable,
官方地址:http://msdn.microsoft.com/zh-cn/library/system.collections.hashtable(VS.80).aspx
实例:
Code
<!-- <br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Collections;
namespace
CSharp
{
public
class
TestHashtable
{
public
TestHashtable()
{
HashtableobjHashtable
=
new
Hashtable();
//
需要注意的是:这里的add有点不同于ArrayList,这里需要指定两个值,一个是key,一个value.
//
而且必须都是Object
objHashtable.Add(
"
Key
"
,
"
Value
"
);
objHashtable.Add(
1
,
2
);
objHashtable.Add(
2.1
,
3.2
);
//
获取所有的key
ICollectionkeys
=
objHashtable.Keys;
foreach
(
object
key
in
keys)
{
Console.WriteLine(
"
Keyis{0},Valuesis{1}
"
,key,objHashtable[key]);
}
Console.WriteLine();
//
换一种遍历方式:
foreach
(DictionaryEntryde
in
objHashtable)
{
Console.WriteLine(
"
Keyis{0},Valuesis{1}
"
,de.Key,de.Value);
}
Console.ReadLine();
}
}
}
分享到:
相关推荐
C#数据结构之Array、ArrayList、Hashtable、Dictionary C#中有多种数据结构可以用来存储和管理数据,今天我们将讨论四种常用的数据结构:Array、ArrayList、Hashtable和Dictionary。这些数据结构都是_Collections_...
本篇文章将深入探讨三种常见的集合类型:Array、ArrayList、Hashtable以及泛型的List,并提供相关的示例代码来帮助理解它们的用法。 ### 1. Array(数组) 数组是最基础的集合类型,它允许存储相同类型的元素序列...
比较分析Vector、ArrayList和hashtable hashmap数据结构
本文主要探讨了几个常用的集合类,包括Array、ArrayList、List、Hashtable、Dictionary, TValue>、Stack和Queue,以及它们的特点和应用场景。 1. **数组**(Array):数组是最基本的数据结构,它是一个固定大小的...
综上所述,C# 中的 Array、ArrayList 和 List 都是非常重要的集合类型,它们各有优势: - **Array**:适用于固定大小且类型一致的元素集合。 - **ArrayList**:适用于类型不确定或可变的集合,但效率较低。 - **...
HashTable是另一种集合类,它使用哈希表来存储键值对。在这个通讯录应用中,HashTable可能用于通过姓名或其他唯一标识快速查找联系人信息。由于HashTable基于哈希算法,它的查找速度通常比ArrayList快,但插入和删除...
- **实现List接口**:ArrayList实现了List接口,这意味着它支持所有List接口定义的操作。 - **允许null值**:ArrayList允许插入null值。 - **提供了操作容量的方法**:用户可以通过特定方法来显式地调整ArrayList的...
在Java编程中,ArrayList是集合框架中一个重要的类,属于List接口的实现,它提供了动态数组的功能,允许我们在集合中存储、添加、删除元素,并且可以按索引访问。这篇文章将深入探讨ArrayList的内部实现原理,帮助...
在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`、`ArrayList`、`Vector`、`HashTable`和`HashMap`是五个关键的接口和类,它们各有不同的特性和用途。以下是这些概念的详细解释: 1. **List接口**...
在探讨 JDK 7.0 中 ArrayList 的底层实现原理之前,首先需要了解 ArrayList 作为 Java 集合框架中 List 接口的动态数组实现类的基本概念。ArrayList 提供了一种存储有序、可重复、允许为 null 的数据结构,并且该...
集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等。Collection 接口没有实现类,因此需要通过其子接口来实现。 Set 是一个...
C# ArrayList 的用法 ArrayList 是一个特殊的数组,通过添加和删除元素,可以动态改变数组的长度。下面是 ArrayList 的一些重要用法和特点: 一、优点: 1. 支持自动改变大小的功能:ArrayList 可以根据需要自动...
Java试题-2:ArrayList类动态代理 什么是动态代理 动态代理该怎么实现
ArrayList是Java集合框架中的一部分,它实现了List接口。ArrayList是一个动态数组,允许元素的随机访问。它通过在内部维护一个数组来存储元素,并在需要时自动增长数组大小。ArrayList提供了添加、删除、修改和查找...
- Vector 和 ArrayList 都实现了 List 接口,其中 Vector 是线程安全的,而 ArrayList 不是。ArrayList 在插入和查找性能上通常优于 Vector,因为 Vector 的同步操作会带来额外的性能开销。 - LinkedList 实现了 ...
除了ArrayList和Queue,C#还提供了其他集合类,例如Stack(后进先出,LIFO)和LinkedList(链表)。在System.Collections.Generic命名空间中,C#引入了泛型集合,如List和Dictionary, TValue>,它们提供了更好的类型...
在.NET框架中,C#提供了多种内置集合,包括ArrayList、Hashtable、Stack、Queue、BitArray和SortedList等。 1. **ArrayList集合**: ArrayList是一种动态数组,可以方便地增删元素。它允许存储任意类型的对象,但...
C# ArrayList用法大全 C# 的 ArrayList 是一个特殊的数组,通过添加和删除元素,可以动态改变数组的长度。下面是 ArrayList 的详细用法大全: 一、优点 1. 支持自动改变大小的功能:ArrayList 可以根据需要自动...