集合及特殊集合

集合的基本信息:

System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。
ystem.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。

常用的集合为ArrayList类;特殊集合一般会用到Queue队列集合、Stack栈集合还有Hashtable哈希表集合。

集合不同于数组,是一组可变数量的元素的组合,这些元素可能共享某些特征,需要以某种操作方式一起进行操作。一般来说,这些元素的类型是相同的。

集合与数组的区别:数组是连续的、同一类型数据的一块区域,而集合可以是不连续的、多种数据类型的。

一、ArrayList集合:

ArrayList实现了IList、ICollection、IEnumerable接口;

  ArrayList与Array的名字很相似,现在来比较一下两者的异同。

相同点:

  (1)两者都实现了IList、ICollection、IEnumerable接口;

  (2)两者都可以使用整数索引访问集合中的元素,包括读取和赋值,且集合中的索引都从0开始。

不同点:

  (1)ArrayList是集合,而Array是数组;

  (2)ArrayList是具体类,Array是抽象类;

  (3)数组必须在实例化时指定元素的数量,该数量一旦确定就不可以更改了,而ArrayList扩展了这一点,当实例化一个ArrayList实例时可以不指定集合元素数(有默认初始容量),当然你也可以指定初始容量;

  (4)获取数组的元素数时使用Length属性,而获取ArrayList集合的元素数时使用Count属性;

  (5)数组可以有多维,而ArrayList只能是一维。

ArrayList具体提供的功能:

ArrayList al = new ArrayList();//初始化

al.Add(3);

al.Add(5);

al.Add(1);

al.Add(8);

al.Add(4);

错误      因为5号索引之前就没有,所以直接赋值不可以

al[5] = 9;

al[4] = 9;

查看个数

Console.WriteLine(al.Count);

清空集合

al.Clear();

克隆集合

ArrayList al1 = new ArrayList();

al1 = (ArrayList)al.Clone();

Console.WriteLine(al1[2]);

判断是否包含某个元素

Console.WriteLine(al.Contains(6));

查看第一次出现该元素的索引号   若没有,返回-1

Console.WriteLine(al.IndexOf(1));

查看最后一次出现该元素的索引号

Console.WriteLine(al.LastIndexOf(9));

在1号索引插入一个4

al.Insert(1,4);

Console.WriteLine(al[1]);

移除某个元素的第一次出现的值

al.Remove(4);

Console.WriteLine(al[1]);

移除某个索引号上的元素

  1. al.RemoveAt();
  2.  
  3. Console.WriteLine(al[]);
  4.  
  5. for (int i = ; i < al.Count; i++)
  6.  
  7. {
  8.  
  9. Console.WriteLine(al[i]);
  10.  
  11. }
  12.  
  13. Console.WriteLine();

排序,升序

  1. al.Sort();
  2.  
  3. for (int i = ; i < al.Count; i++)
  4.  
  5. {
  6.  
  7. Console.WriteLine(al[i]);
  8.  
  9. }

改为降序

al.Reverse();//翻转集合

例题:1、输入人数,输入每一个人的分数,求平均分,求最高分,求最低分,写成集合。

  1. ArrayList a = new ArrayList();
  2.  
  3. double m = ;
  4.  
  5. Console.Write("请输入人数:");
  6.  
  7. int b = int.Parse(Console.ReadLine());
  8.  
  9. for (int i = ; i < b; i++)
  10.  
  11. {
  12.  
  13. Console.Write("输入分数:");
  14.  
  15. a.Add(double.Parse(Console.ReadLine()));
  16.  
  17. m += double.Parse(a[i].ToString());
  18.  
  19. }
  20.  
  21. Console.Write("平均分为:"+(m/b));
  22.  
  23. a.Sort();
  24.  
  25. Console.Write("最低分为:"+a[]);
  26.  
  27. Console.Write("最高分为:" + a[b - ]);
  28.  
  29. Console.ReadLine();

2、将每个人的姓名,年龄存入集合,按照年龄从大到小排列,姓名也需要排列,需要知道年龄最大的是谁。

法一:

  1. Console.Write("请输入人数:");
  2.  
  3. int n = int.Parse(Console.ReadLine());
  4.  
  5. ArrayList xm = new ArrayList();
  6.  
  7. ArrayList age = new ArrayList();
  8.  
  9. for (int i = ; i < n; i++)
  10.  
  11. {
  12.  
  13. Console.Write("请输入第{0}个人的姓名:", (i + ));
  14.  
  15. xm.Add(Console.ReadLine());
  16.  
  17. Console.Write("请输入{0}个人的年龄:", (i + ));
  18.  
  19. age.Add(int.Parse(Console.ReadLine()));
  20.  
  21. }
  22.  
  23. for (int i = ; i < n; i++)
  24.  
  25. {
  26.  
  27. for (int j = i; j < n - ; j++)
  28.  
  29. {
  30.  
  31. if (int.Parse(age[i].ToString()) < int.Parse(age[j + ].ToString()))
  32.  
  33. {
  34.  
  35. int zh = int.Parse(age[i].ToString());
  36.  
  37. age[i] = age[j + ];
  38.  
  39. age[j + ] = zh;
  40.  
  41. string z = xm[i].ToString();
  42.  
  43. xm[i] = xm[j + ];
  44.  
  45. xm[j + ] = z;
  46.  
  47. }
  48.  
  49. }
  50.  
  51. }
  52.  
  53. Console.WriteLine("年龄最大的是{0},是{1}岁", xm[], age[]);
  54.  
  55. Console.ReadLine();

法二:

  1. Console.WriteLine("请输入人数:");
  2.  
  3. int a = int.Parse(Console.ReadLine());
  4.  
  5. ArrayList jh = new ArrayList();
  6.  
  7. for (int i = ; i < a; i++)
  8.  
  9. {
  10.  
  11. Console.Write("请输入第{0}人的姓名:", i + );
  12.  
  13. jh.Add(Console.ReadLine());
  14.  
  15. Console.Write("请输入第{0}人的年龄:", i + );
  16.  
  17. jh.Add(Console.ReadLine());
  18.  
  19. }
  20.  
  21. Console.WriteLine();
  22.  
  23. for (int i = ; i < a * ; i = i + )
  24.  
  25. {
  26.  
  27. for (int j = i; j < a * - ; j = j + )
  28.  
  29. {
  30.  
  31. if (int.Parse(jh[i].ToString()) < int.Parse(jh[j + ].ToString()))
  32.  
  33. {
  34.  
  35. int huan = int.Parse(jh[i].ToString());
  36.  
  37. jh[i] = jh[j + ];
  38.  
  39. jh[j + ] = huan;
  40.  
  41. string o = jh[i - ].ToString();
  42.  
  43. jh[i - ] = jh[j + ];
  44.  
  45. jh[j + ] = o;
  46.  
  47. }
  48.  
  49. }
  50.  
  51. }
  52.  
  53. Console.WriteLine("年龄最大的为:" + jh[] + "年龄为:" + jh[]);
  54.  
  55. Console.ReadLine();

注:借用上一题的定义集合名

●遍历集合:foreach (object aa in jh)

{

Console.WriteLine(aa);

}

●遍历数组:int [] array = new int[]{2,3,4,6,7,8,9,2};

foreach (int aa in array)

{

Console.WriteLine(aa+2);

}

C#语言基础——集合(ArrayList集合)的更多相关文章

  1. Java集合 -- ArrayList集合及应用

    JAVA集合 对象数组 集合类之ArrayList 学生管理系统 斗地主案例 NO.one 对象数组 1.1 对象数组描述 A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3, ...

  2. Java基础系列--ArrayList集合

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8494618.html 一.概述 ArrayList是Java集合体系中最常使用,也是最简单 ...

  3. 【备忘】C#语言基础-1

    C#基础 注意区别哟! C#是一种托管语言,与C++不同,不能直接操作系统底层,依赖于 framework. 如果局部变量和全局变量同名,全局变量就会被屏蔽. 函数的返回值类型不是签名的一部分,所以不 ...

  4. C#基础课程之四集合(ArrayList、List<泛型>)

    list泛型的使用 ArrayList list = new ArrayList(); ArrayList list = ); //可变数组 list.Add("我"); //Ad ...

  5. 【代码笔记】Java常识性基础补充(二)——数组、ArrayList集合、ASCII编码、 eclipse基础操作、eclipse调试、eclipse项目导入、eclipse快捷键

    1.0 如何定义数组以及访问数组中的元素,如下所示.ArrayDemo01.java public class ArrayDemo01 { public static void main(String ...

  6. Java基础语法(自定义类、ArrayList集合)

    Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...

  7. 01 语言基础+高级:1-6 集合_day03【List、Set、Collections工具类】

    day03 [List.Set.数据结构.Collections] 主要内容 数据结构 List集合 Set集合 Collections 第一章 数据结构 2.1 数据结构有什么用 我们将常见的数据结 ...

  8. Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素

    1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...

  9. JAVA基础——集合——ArrayList

    ArrayList集合 ArrayList的一些方法(JDK1.8): 将指定的元素附加到列表的末尾,true:添加成功,false:添加失败: public boolean add(E e)    ...

随机推荐

  1. [Intel Edison开发板] 04、Edison开发基于nodejs和redis的服务器搭建

    一.前言 intel-iot-examples-datastore 是Intel提供用于所有Edison开发板联网存储DEMO所需要的服务器工程.该工程是基于nodejs和redis写成的一个简单的工 ...

  2. [Solr] (源) Solr与MongoDB集成,实时增量索引

    一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中,直接向Solr服务发送请求,返回xml.js ...

  3. Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索

    Atitit 知识管理的重要方法 数据来源,聚合,分类,备份,发布 搜索 1.1. Rss 简易信息聚合(也叫聚合内容 Really Simple Syndication1 1.1. Rss 简易信息 ...

  4. 计算机人物系列-Mauchly,Eckert,Goldstine

    关键词:莫尔学院(Moore School),阿伯丁试验场(Aberdeen Proving Ground), 雷明顿兰德公司(Remington Rand Corporation), IBM院士(I ...

  5. js连等赋值

    引用:http://www.iteye.com/topic/785445 https://segmentfault.com/q/1010000002637728 这是一个问题 var a = {n:1 ...

  6. 关于安卓6.0权限申请 PermissionDog

    最近在一家公司实习,项目中需要用到适配安卓6.0以上的系统,我本来是想用其他人已经写好的权限申请框架来实现的,但是发现跟我的需求有点小区别,所以就自己写了一个 这个权限申请的帮助类很小,只有一个jav ...

  7. ECS Linux 服务器公钥秘钥SSH登录

    Ubuntu 14.04.1为例,设置步骤如下: 一. 生成密钥的公钥和私钥 # ssh-keygen -t rsa Generating public/private rsa key pair. E ...

  8. vscode常用设置

    1.代码提示快捷键设置:(keybindings.json) { "key": "ctrl+j","command": "edit ...

  9. ORA 各种oraclesql错误

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...

  10. ASP.NET MVC 登录验证

     好久没写随笔了,这段时间没 什么事情,领导 一直没安排任务,索性 一直在研究代码,说实在的,这个登录都 搞得我云里雾里的,所以这次我可能也讲得不是 特别清楚,但是 我尽力把我知道的讲出来,顺便也对自 ...