Csharp进阶:泛型集合

来源:互联网 发布:淘宝付款怎么取消订单 编辑:程序博客网 时间:2024/06/10 11:29

泛型集合

List泛型集合

在C#中,提供了一个List泛型集合,该集合不仅具备ArrayList集合的功能,而且还可以保证List集合只能添加同类型元素,不会出现类型转换的问题

ArrayList list = new ArrayList();

Add方法的参数类型是object类型在传递参数的时候整型1会转化成object类型 这样属于装箱操作

list.Add(1);

如果实现 list[0] + 2 得到正确的结果 要将list[0]转化成int类型 也就是说要进行拆箱操作 

Console.WriteLine((int)list[0] + 2);

泛型结合在声明的时候已经确定了里面的元素类型,里面的传入的数据类型只能和声明时定义的类型保持一致。泛型能在编译时,提供强大的类型检查,减少数据类型之间的显示转化、装箱操作和运行时的类型检查。

   List<string> list =newList<string>();

GetRange用来截取由下标X开始共Y个元素为一个新集合

 List<int> newList = numList.GetRange(2, 3);

记录查找元素的数量

            int count = 0;

            while (newList.IndexOf(2) != -1)

            {

                index = newList.IndexOf(2);

                count++;

***由于此步操作需要删除集合中的元素,所以通常复制一个新集合进行操作***

                newList.RemoveAt(index);

            }

            Console.WriteLine(count);

Dictionary泛型集合

Hashtable集合中的键与值在默认情况下都是object类型,这使得用户在取值时不可避免地遇到类型转换的问题。为了解决这个问题,C#中提供了Dictionary泛型集合。该集合中的键与值都只能是一种类型。

Dictionary<string,string> dic =newDictionary<string,string>();

在一个字典中键是唯一的

在一个字典中不同的键可以对应相同的值

dic.Add("张杰","高飞");

dic.Add("刘欢","好汉歌");

dic.Add("周杰伦","青花瓷");

dic.Add("刘英","青花瓷");

ContainsKey判断是否包含特定的键

  bool key =dic.ContainsKey("周杰伦");

ContainsValue判断是否包含特定的元素

bool value = dic.ContainsValue("好汉歌");          

dic.Keys获取键的集合

KeyCollection keys = dic.Keys;

字典集合中对象的有效使用案例

Dictionary<string,Book> books =newDictionary<string,Book>(); books.Add("0000000",newBook("C#编程之道",56,"王垚"));

books.Add("0000001"new Book("C#从入门到精通", 98,"YY"));

books.Add("0000002"new Book("C#从入门到放弃", 2,"亚东"));

对整个字典集合的遍历的两种方法

foreach (var itemin dic)

            {

                Console.WriteLine(item);

           }

foreach (KeyValuePair<string,string> itemin dic)

            {

                Console.WriteLine(item.Key);

           }

SortedDictionary表示对字典集合根据键进行排序

SortedDictionary<string,string> dic =newSortedDictionary<string,string>();

HashSet泛型集合

HashSet的特点是集合中的元素不会相同,此特性在生成1-100的随机数案例中得以有效体现,根据集合特性,100个数直接随机输出。

HashSet<int> hs =newHashSet<int>();

  Random random = new Random();

            while (hs.Count < 100)

            {

                hs.Add(random.Next(1, 101));

            }

 

            foreach (var itemin hs)

            {

                Console.WriteLine(item);

            }


原创粉丝点击