`
isiqi
  • 浏览: 16538791 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

c# 集合类:ArrayList,StringCollection,Hashtable,List

阅读更多

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

实例:


<!-- <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 C#中有多种数据结构可以用来存储和管理数据,今天我们将讨论四种常用的数据结构:Array、ArrayList、Hashtable和Dictionary。这些数据结构都是_Collections_...

    C#中的集合示例(Array,ArrayList,Hashtable,List)

    本篇文章将深入探讨三种常见的集合类型:Array、ArrayList、Hashtable以及泛型的List,并提供相关的示例代码来帮助理解它们的用法。 ### 1. Array(数组) 数组是最基础的集合类型,它允许存储相同类型的元素序列...

    比较分析Vector、ArrayList和hashtable hashmap数据结构

    比较分析Vector、ArrayList和hashtable hashmap数据结构

    C#_集合类_Array,Arraylist,List,Hashtable,Dictionary,Stack,Queue_学习资料

    本文主要探讨了几个常用的集合类,包括Array、ArrayList、List、Hashtable、Dictionary, TValue&gt;、Stack和Queue,以及它们的特点和应用场景。 1. **数组**(Array):数组是最基本的数据结构,它是一个固定大小的...

    C# Array和ArrayList,List区别

    综上所述,C# 中的 Array、ArrayList 和 List 都是非常重要的集合类型,它们各有优势: - **Array**:适用于固定大小且类型一致的元素集合。 - **ArrayList**:适用于类型不确定或可变的集合,但效率较低。 - **...

    C#个人通讯录,分别用了ArrayList、HashTable、XML、Access、TXT实现

    HashTable是另一种集合类,它使用哈希表来存储键值对。在这个通讯录应用中,HashTable可能用于通过姓名或其他唯一标识快速查找联系人信息。由于HashTable基于哈希算法,它的查找速度通常比ArrayList快,但插入和删除...

    jdk源码阅读一:ArrayList

    - **实现List接口**:ArrayList实现了List接口,这意味着它支持所有List接口定义的操作。 - **允许null值**:ArrayList允许插入null值。 - **提供了操作容量的方法**:用户可以通过特定方法来显式地调整ArrayList的...

    深入Java集合学习系列:ArrayList的实现原理

    在Java编程中,ArrayList是集合框架中一个重要的类,属于List接口的实现,它提供了动态数组的功能,允许我们在集合中存储、添加、删除元素,并且可以按索引访问。这篇文章将深入探讨ArrayList的内部实现原理,帮助...

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`、`ArrayList`、`Vector`、`HashTable`和`HashMap`是五个关键的接口和类,它们各有不同的特性和用途。以下是这些概念的详细解释: 1. **List接口**...

    源码解析jdk7.0集合:ArrayList的底层实现原理.pdf

    在探讨 JDK 7.0 中 ArrayList 的底层实现原理之前,首先需要了解 ArrayList 作为 Java 集合框架中 List 接口的动态数组实现类的基本概念。ArrayList 提供了一种存储有序、可重复、允许为 null 的数据结构,并且该...

    java集合类详解(set list ArrayList等java集合类详述)

    集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等。Collection 接口没有实现类,因此需要通过其子接口来实现。 Set 是一个...

    C#_StringList的用法

    C# ArrayList 的用法 ArrayList 是一个特殊的数组,通过添加和删除元素,可以动态改变数组的长度。下面是 ArrayList 的一些重要用法和特点: 一、优点: 1. 支持自动改变大小的功能:ArrayList 可以根据需要自动...

    Java试题-2:ArrayList类动态代理

    Java试题-2:ArrayList类动态代理 什么是动态代理 动态代理该怎么实现

    Arraylist、Hashtable、Vector

    ArrayList是Java集合框架中的一部分,它实现了List接口。ArrayList是一个动态数组,允许元素的随机访问。它通过在内部维护一个数组来存储元素,并在需要时自动增长数组大小。ArrayList提供了添加、删除、修改和查找...

    比较Vector、ArrayList和hashtable hashmap

    - Vector 和 ArrayList 都实现了 List 接口,其中 Vector 是线程安全的,而 ArrayList 不是。ArrayList 在插入和查找性能上通常优于 Vector,因为 Vector 的同步操作会带来额外的性能开销。 - LinkedList 实现了 ...

    C#集合类 教程学习资源

    除了ArrayList和Queue,C#还提供了其他集合类,例如Stack(后进先出,LIFO)和LinkedList(链表)。在System.Collections.Generic命名空间中,C#引入了泛型集合,如List和Dictionary, TValue&gt;,它们提供了更好的类型...

    C#教学课件:第5章 集合.ppt

    在.NET框架中,C#提供了多种内置集合,包括ArrayList、Hashtable、Stack、Queue、BitArray和SortedList等。 1. **ArrayList集合**: ArrayList是一种动态数组,可以方便地增删元素。它允许存储任意类型的对象,但...

    C# ArrayList用法大全

    C# ArrayList用法大全 C# 的 ArrayList 是一个特殊的数组,通过添加和删除元素,可以动态改变数组的长度。下面是 ArrayList 的详细用法大全: 一、优点 1. 支持自动改变大小的功能:ArrayList 可以根据需要自动...

Global site tag (gtag.js) - Google Analytics