A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 穷傻呆丑萌 中级黑马   /  2013-7-30 10:52  /  1739 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


ArrayList类是System.Collections命名空间的类,类似于数组,有人称其为动态数组、其容量可以根据需要自动扩充,元素的索引也可以根据元素的数量重新分配,可以动态实现元素的添加,和删除等操作。
ArrayList类其实可以理解为Array的优化版本,该类既有数组的特征,又有几何的特性,提供了很多集合类,Array累没有的属相和方法
下面是ArrayList类的属性和方法
Count--返回ArrayList对象包含实际元素的个数
Capacity--指定ArrayList的容量,可以包含元素的个数,默认为16
Item--可以通过索引方式开访问元素
Add()--在数组末尾添加一个元素
AddRange() --在数组末尾增加一定范围内的元素
Insert() --插入一个元素
Remove() --删除一个元素
RemoveAt() --移除特定索引位子的元素
IndexOf() --返回某个元素的索引
Clear() --清楚所有元素
Contains() --检查给定元素是否在数组中

Count  和 Capacity的不同,前者是数量,后者是容量,容量是指最多可以存储多少个元素,数量是指真正存储了多少个元素。ArrayList的容量和数量都是可以变的,就像一个杯子容量为一升,表明最多可以存储一升的水,但不一定非得装满,装半杯也可以,那么半杯水就相当于Count,一升就相当于Capacity。
通过ArrayList的属性和方法可以看出,添加元素的方法有Add,Insert和AddRange
pubilce int Add(Object value);
value是添加元素,这些元素不论什么类型都会被转换成Object类型然后被保存,此方法返回值是整形,用于返回添加元素的索引,添加的元素讲插入到集合的末尾处
publice void Insert(int index,Object value);
该发夹指定插入元素的位置,参数index为插入元素的索引,value是插入的元素,该方法没有返回值,当index的值小于0或者大于属性值得时候会发生异常
pucilce vaid AddRange(Object [] value);
可以理解为添加一个Object类型的数组到ArrayList中




HashTable 称为哈希表,是System.Collections;累么一个重要的类,与ArrayList不同,哈希表可以存储键/值对的集合。如果把哈希表当做字典,那么键就是字典中的单词,值就是关于词的解释内容

在ArrayList集合中,可以使用索引访问元素,如果不能确切字典索引的值,访问就比较困难,HashTable 集合利用键/值来存储数据,在哈希表中,每个元素都一个键/值对,并且是一一相对的通过键就可以得到值如果存储电话号码,通常是姓名和电话号码在一起的,存储时吧姓名当做键,号码当做值通过姓名可以查到电话号码,这就是一个典型的存储方式
Count-- 哈希表中元素的个数
Keys-- 哈希表中所有键的集合
Values --哈希表中所有列的集合
Add()--像哈希表中添加一个元素,包括元素的建和值
Clear()--清除哈希表中所有的元素
Remove()--删除指定的元素
GerEnumerator() --返回IdictionaryEnumerator。可以遍历哈希表
接下来HashTable的使用方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace HashTabile使用实例___电话薄
{
    public class TelNote
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private string number;
        public string Nunber
        {
            get { return number; }
            set { number = value; }
            
        }
    }
     public class TelNoteEdit
     {
            public Hashtable httels= new Hashtable();
            public void Add(TelNote tel)
            {
                if (httels.Count == 0)
                {
                    Hashtable ht = new Hashtable();
                    httels.Add(tel.Name, tel);
                }
                else
                {
                    if (httels.Contains(tel.Nunber))
                    {
                        httels[tel.Name] = tel.Nunber;
                    }
                    else
                    {
                        httels.Add(tel.Name, tel);
                    }
                    

                 }
     }
            public TelNote GetByName(string name)
            {
                foreach (object tel in httels.Values)
                {
                    TelNote mytel=(TelNote)tel;
                    if (name == mytel.Name)
                    {
                        return mytel;
                    }
                  
                }
                return null;
            }
        


    }
    class Program
    {
        static void Main(string[] args)
        {
            TelNote myte11 = new TelNote();
            myte11.Name = "张佳策";
            myte11.Nunber = "123456789";
            TelNote myte12 = new TelNote();
            myte12.Name = "张俊峰";
            myte12.Nunber = "123456789";
            TelNoteEdit qwer = new TelNoteEdit();
            qwer.Add(myte11);
            qwer.Add(myte12);
            Console.WriteLine("哈希表中元素的个数为{0}",qwer.httels.Count);
            foreach (DictionaryEntry myte13 in qwer.httels)
            {
                Console.WriteLine("\t{0}\t{1}",myte13.Key,myte13.Value);
            
            }
            TelNote myte1 = qwer.GetByName("张俊峰");
            Console.WriteLine("{0}的电话是{1}",myte1.Name,myte1.Nunber);
            Console.ReadKey();



        }
    }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马