C#语言基础——集合(ArrayList集合)
集合及特殊集合
集合的基本信息:
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]);
移除某个索引号上的元素
al.RemoveAt(); Console.WriteLine(al[]); for (int i = ; i < al.Count; i++) { Console.WriteLine(al[i]); } Console.WriteLine();
排序,升序
al.Sort(); for (int i = ; i < al.Count; i++) { Console.WriteLine(al[i]); }
改为降序
al.Reverse();//翻转集合
例题:1、输入人数,输入每一个人的分数,求平均分,求最高分,求最低分,写成集合。
ArrayList a = new ArrayList(); double m = ; Console.Write("请输入人数:"); int b = int.Parse(Console.ReadLine()); for (int i = ; i < b; i++) { Console.Write("输入分数:"); a.Add(double.Parse(Console.ReadLine())); m += double.Parse(a[i].ToString()); } Console.Write("平均分为:"+(m/b)); a.Sort(); Console.Write("最低分为:"+a[]); Console.Write("最高分为:" + a[b - ]); Console.ReadLine();
2、将每个人的姓名,年龄存入集合,按照年龄从大到小排列,姓名也需要排列,需要知道年龄最大的是谁。
法一:
Console.Write("请输入人数:"); int n = int.Parse(Console.ReadLine()); ArrayList xm = new ArrayList(); ArrayList age = new ArrayList(); for (int i = ; i < n; i++) { Console.Write("请输入第{0}个人的姓名:", (i + )); xm.Add(Console.ReadLine()); Console.Write("请输入{0}个人的年龄:", (i + )); age.Add(int.Parse(Console.ReadLine())); } for (int i = ; i < n; i++) { for (int j = i; j < n - ; j++) { if (int.Parse(age[i].ToString()) < int.Parse(age[j + ].ToString())) { int zh = int.Parse(age[i].ToString()); age[i] = age[j + ]; age[j + ] = zh; string z = xm[i].ToString(); xm[i] = xm[j + ]; xm[j + ] = z; } } } Console.WriteLine("年龄最大的是{0},是{1}岁", xm[], age[]); Console.ReadLine();
法二:
Console.WriteLine("请输入人数:"); int a = int.Parse(Console.ReadLine()); ArrayList jh = new ArrayList(); for (int i = ; i < a; i++) { Console.Write("请输入第{0}人的姓名:", i + ); jh.Add(Console.ReadLine()); Console.Write("请输入第{0}人的年龄:", i + ); jh.Add(Console.ReadLine()); } Console.WriteLine(); for (int i = ; i < a * ; i = i + ) { for (int j = i; j < a * - ; j = j + ) { if (int.Parse(jh[i].ToString()) < int.Parse(jh[j + ].ToString())) { int huan = int.Parse(jh[i].ToString()); jh[i] = jh[j + ]; jh[j + ] = huan; string o = jh[i - ].ToString(); jh[i - ] = jh[j + ]; jh[j + ] = o; } } } Console.WriteLine("年龄最大的为:" + jh[] + "年龄为:" + jh[]); 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集合)的更多相关文章
- Java集合 -- ArrayList集合及应用
JAVA集合 对象数组 集合类之ArrayList 学生管理系统 斗地主案例 NO.one 对象数组 1.1 对象数组描述 A:基本类型的数组:存储的元素为基本类型 int[] arr={1,2,3, ...
- Java基础系列--ArrayList集合
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8494618.html 一.概述 ArrayList是Java集合体系中最常使用,也是最简单 ...
- 【备忘】C#语言基础-1
C#基础 注意区别哟! C#是一种托管语言,与C++不同,不能直接操作系统底层,依赖于 framework. 如果局部变量和全局变量同名,全局变量就会被屏蔽. 函数的返回值类型不是签名的一部分,所以不 ...
- C#基础课程之四集合(ArrayList、List<泛型>)
list泛型的使用 ArrayList list = new ArrayList(); ArrayList list = ); //可变数组 list.Add("我"); //Ad ...
- 【代码笔记】Java常识性基础补充(二)——数组、ArrayList集合、ASCII编码、 eclipse基础操作、eclipse调试、eclipse项目导入、eclipse快捷键
1.0 如何定义数组以及访问数组中的元素,如下所示.ArrayDemo01.java public class ArrayDemo01 { public static void main(String ...
- Java基础语法(自定义类、ArrayList集合)
Java基础语法 今日内容介绍 u 自定义类 u ArrayList集合 第1章 引用数据类型(类) 1.1 引用数据类型分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类 ...
- 01 语言基础+高级:1-6 集合_day03【List、Set、Collections工具类】
day03 [List.Set.数据结构.Collections] 主要内容 数据结构 List集合 Set集合 Collections 第一章 数据结构 2.1 数据结构有什么用 我们将常见的数据结 ...
- Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素
1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...
- JAVA基础——集合——ArrayList
ArrayList集合 ArrayList的一些方法(JDK1.8): 将指定的元素附加到列表的末尾,true:添加成功,false:添加失败: public boolean add(E e) ...
随机推荐
- ValueInjecter----最好用的OOM(以微信消息转对象举例)
使用数据实体的好处我这里就不多说了,但大家享受这些好处的时候,难免也对那些琐碎的赋值代码感到厌烦,基于此,我认为掌握一个oom的使用,还是很有必要的. 这种类型的工具有很多,比如automapper, ...
- [翻译]AKKA笔记 - CHILD ACTORS与ACTORPATH -6
原文:http://rerun.me/2014/10/21/akka-notes-child-actors-and-path/ Actor是完全的继承结构.你创建的任何Actor肯定都是一个其他Act ...
- 如何下载Github单个文件(Windows平台)
如何下载Github单个文件(Windows平台) 前提 安装Chrome 浏览器 Chrome浏览器 安装迅雷软件 安装Chrome 迅雷插件 可能商店里迅雷插件有好几种,这里使用这一种 一般使用者 ...
- 断电不断网——Linux的screen
title: 断电不断网--Linux的screen author:青南 date: 2015-01-01 20:20:23 categories: [Linux] tags: [linux,scre ...
- Php基础知识测试题
一:选择题 1. LAMP具体结构不包含下面哪种(A ) A:Windows系统 如果是这个就是WMP B:Apache服务器 C:MySQL数据库 D:PHP语 ...
- .NET Core采用的全新配置系统[7]: 将配置保存在数据库中
我们在<聊聊默认支持的各种配置源>和<深入了解三种针对文件(JSON.XML与INI)的配置源>对配置模型中默认提供的各种ConfigurationSource进行了深入详尽的 ...
- T-SQL:毕业生出门需知系列(九)
<SQL 必知必会>读书笔记 -- 第9课 汇总数据 9.1 聚集函数:对某些行运行的函数,计算并返回一个值 案例: -- 确定表中函数 -- 获得表中某些行的和 -- 找出表列的最大值. ...
- spring boot(二):web综合开发
上篇文章介绍了Spring boot初级教程:spring boot(一):入门篇,方便大家快速入门.了解实践Spring boot特性:本篇文章接着上篇内容继续为大家介绍spring boot的其它 ...
- 解决Jquery Kendo.xxx is not a function 的方法
不知道大家遇到过没有,要同时间使用Telerick 和Kendo的时候 这个问题搞了我好多天,其实解决方法很简单,就是在LAYOUT里面先写TELERIK的注册脚本, 再写KENDO的. @(Html ...
- 用SignalR 2.0开发客服系统[系列2:实现聊天室]
前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...