集合、哈希表、泛型集合、字典
集合(ArrayList)
用的时候导入命名空间:using System.Collections;
加入数据时,不用考虑数据类型
拿出数据时多数情况需要里氏转换
方法:
用ArrayList的方法添加内容,定义一个person类有一个打招呼方法,如果需要用到person类的内容,里氏转换并调用打招呼方法,否则,输出添加的内容
代码:
ArrayList arrayList = new ArrayList();//类的初始化arrayList.Add("小蚊子");//往arrayList中添加arrayList.Add(12);arrayList.Add(new person("小郭", 20, '女'));for (int i = 0; i < arrayList.Count; i++)//遍历 arrayList的数组,arrayList.Count为数组的长度 {if (arrayList[i] is person)//用is判断arrayList[i] 是否能转化为 person类 {((person)arrayList[i]).SayHi();//如果能转换为person,强转,调用person中SayHi方法 }else{Console.WriteLine(arrayList[i]);//输出arrayList[i] }}Console.ReadKey();}}public class person{public person(string name, int age, char sex){this.Name = name;this.Age = age;this.Sex = sex;}private string _name;public string Name{get { return _name; }set { _name = value; }}private int _age;public int Age{get { return _age; }set { _age = value; }}private char _sex;public char Sex{get { return _sex; }set { _sex = value; }}public void SayHi(){Console.WriteLine("{0}岁的{1}在软件学院是最纯洁的{2}学生", Age, Name, Sex);}} }
ArrayList其它常用方法:
ArrayList arrayList = new ArrayList();int[] nums = new int[] { 3, 4, 5, 6, 7, 9, 8, 8 };arrayList.InsertRange(0, nums);//在指定索引位置插入一个数组int num = arrayList.LastIndexOf(9);//查找出元素最后一次出现的位置arrayList.Remove(9);//移除集合中某个元素arrayList.RemoveAt(2);//给个索引,移除这个索引对应的元素arrayList.RemoveRange(4, 2);//从指定索引位置开始移除,移除几个元素arrayList.Reverse();//集合反转arrayList.Sort();//排序
哈希表(Hashtable)
用的时候导入命名空间:using System.Collections;
加入数据时,不用考虑数据类型,以键值对的方式存储数据,键值不能相同
哈希表无序
常用方法:
Hashtable hashTable = new Hashtable();//实例化化 hashTablehashTable.Add(1, "小杨");//在 hashTable中插入键值为1,值为小杨数据hashTable.Add(2, "老苏");hashTable.Clear();//清空 hashTable中的值bool result = hashTable.Contains(1);//判断 hashTable中是否包含键值为1的数据hashTable.Remove("小杨");//移除小杨// hashTable[key];//这个key对应的值int num = hashTable.Count;//哈希表的长度
泛型集合(List<T>)
不需要导入命名空间
存放指定类型的数据
如果为int类型,可以直接进行求和,最大值,最小值,平均值
方法:求一个int类型的泛型集合长度为100的最大值,最小值,平均值,和
List<int> num = new List<int>();//实例化numint max, min, sum;for (int i = 0; i < 100; i++)//在num中添加字段 {num.Add(i);}sum = num.Sum();//计算num的和max = num.Max();//最大值min = num.Min();//最小值double avg = num.Average();//求平均值
字典:Dictionary<TKey,TValue>
不需要导入命名空间,需要实例化
键值和值都是指定的类型
Key:键值类型,一个哈希表中键值不能相同
TValue:值类型
例子:简繁转换
Dictionary<char, char> dic = new Dictionary<char, char>();string newStr = "";for (int i = 0; i < Jian.Length; i++){dic.Add(Jian[i], HXW[i]);}for (int i = 0; i < str.Length; i++){if (dic.ContainsKey(str[i])){newStr += dic[str[i]];}else{newStr += str[i];}}Console.WriteLine(newStr);Console.ReadKey();
总结:
HashTable,ArrayList,可以存放任意类型的数据,HashTable、Dictionary都是以键值对的方式存放数据,List和Dtctionary插入数据时不用刻意的考虑数据类型。这四个都可以对其数据进行增,删,查,改
转载于:https://www.cnblogs.com/guohuiru/archive/2012/11/19/2776671.html
集合、哈希表、泛型集合、字典相关推荐
- 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较
1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam nam ...
- List泛型集合总结(一)
为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用ArrayList 直接将对象放入ArrayList,操作直观,但由于集合中的项是Object类型,因此每次使用都必须 ...
- C#:List泛型集合
数组的不足 我们在使用数组管理数据的时候,是需要预先知道数组的长度的.但是在我们实际的开发过程中,很多数据往往无法事先知道一共有多少,在面对这些数据的时候,就无法使用数组来进行管理了. 一.集合结构 ...
- C#泛型集合定义及使用
C# 语言中泛型集合是泛型中最常见的应用,主要用于约束集合中存放的元素. 由于在集合中能存放任意类型的值,在取值时经常会遇到数据类型转换异常的情况,因此推荐在定义集合时使用泛型集合. 前面<C# ...
- 源程序的相似性分析 —— 基于Python实现哈希表
一.问题描述 对于两个C++语言的源程序代码,用哈希表的方法分别统计两个程序中使用C++语言关键字的情况,并最终按定量的计算结果,得出两份程序的相似性. 二.需求分析 建立C++语言关键字的哈希表,统 ...
- [Java]源码角度深入理解哈希表,手撕常见面试题
专栏简介 :java语法及数据结构 题目来源:leetcode,牛客,剑指offer 创作目标:从java语法角度实现底层相关数据结构,达到手撕各类题目的水平. 希望在提升自己的同时,帮助他人,,与大 ...
- 链表实现哈希表以及哈希表的应用
''' 哈希表 字典和集合一个通过哈希函数来计算数据存储位置的数据结构,通常支持如下操作: insert:插入键值对 get :如果存在键为key的键值对则返回其value,否则返回空值 delete ...
- 关于哈希表(Hashtable)个人学习理解
数据结构–哈希表(Hashtable.又称散列表) 最近做了一个题目:想要查看集合中的某个指定元素,但是不知道具体的位置. 一般情况下是遍历这个数组的全部,然后去找到这个元素.若此时元素基数不是很大的 ...
- leetcode哈希表解决异位词问题
哈希表 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存储存位置的数据结构. 它通过计算出一个键值的函数(hash function),将所需查询的数据映射到表中一个位置 ...
- 九, Java实现哈希表(拉链法, 数组+单链表)
九, 哈希表 9.1 哈希表的定义和特点 散列表(Hash table, 也叫哈希表),是根据关键码 - 值(Key - value)而直接进行访问的数据结构. 也就是说, 它通过把关键码 - 值映射 ...
最新文章
- ASP.NET页生命周期概述
- 春节后面试别人的经历总结之一,好岗位分享给还在找工作中的软件开发爱好者们【转】...
- JDK动态代理实现简单AOP--转
- 苹果手机怎么编辑word文档_原创首发:编辑和修改PDF文档,将PDF转换为WORD技巧...
- C语言实现封装、继承、多态
- 北方华创:「8大报表应用场景」助力全方位数字化管理
- 素材 | 3D立体设定数据多彩数据统计图元素PSD模板
- Android 微信分享后留在微信,没有回调的问题解决方案
- 接口自动化测试框架实例教程
- 程序员的自我修养之数学基础10:超定方程的求解
- android 打开闹钟,Android中的闹钟设置关闭和打开
- 有道云笔记android手写,有道云笔记手写记事 保留笔迹原汁原味
- 目标客户画像_做营销时,如何做好目标用户群体画像?
- 基于GNN网络的session推荐模型(知识图谱技术在推荐场景的应用)
- 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(沈阳)
- python在手,天下我有!
- GPU-CUDA-图形渲染分析
- 报告显示,疫情降低了人们的财务和社交幸福感
- JavaWeb基本概念与术语
- mysql 1.4安装步骤_从零开始搭建系统1.4——MySql安装及配置