一、索引器
索引器类似于属性,不同之处在于它们的get访问器采用参数。要声明类或结构上的索引器,使用this关键字。
示例:
索引器示例代码 /// <summary>
/// 存储星期几的类。声明了一个get访问器,它接受字符串,并返回相应的整数
/// </summary>
public class 星期
{
public string[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; //索引器 它接受星期几的字符串,将它作为索引index
public int this[string day]
{
//get访问器 并返回相应的整数
get
{
int i = 0; foreach (var item in weeks)
{
if (item == day)
{
return i;
}
i++;
} //没找到返回-1
return -1;
}
}
}
二、哈希表Hashtable
Hastable是哈希表的实现,能根据关键字取关键值,这key的类型是object, value的类型也是object。
在哈希表中添加一个key/value键值对:HashtableObject.Add(key,value);
在哈希表中去除某个key/value键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素: HashtableObject.Clear();
判断哈希表是否包含特定键key: HashtableObject.Contains(key);
遍历Hashtable对象的两种方法:
由于Hashtable每个元素都是一个键/值对,因此元素类型既不是键的类型,也不是值的类型,而是DictionaryEntry类型。
Hashtable示例代码 //方法一
foreach (System.Collections.DictionaryEntry de in myHashtable)
{
//注意HastTable内存储的默认类型是object,需要进行转换才可以输出
Console.WriteLine(de.Key.ToString());
Console.WriteLine(de.Value.ToString());
} //方法二
System.Collections.IDictionaryEnumerator enumerator = myHashtable.GetEnumerator(); while (enumerator.MoveNext())
{
Console.WriteLine(enumerator.Key); // Hashtable关健字
Console.WriteLine(enumerator.Value); // Hashtable值
}
三、字典Dictionary
Dictionary<Tkey,Tvalue>是Hastbale的泛型实现。
//遍历键
foreach (string key in myDictionary.Keys)
{
//遍历某键的值
foreach (string val in myDictionary[key])
{ }
}
由于 Dictionary 是键和值的集合,因此元素类型并非键类型或值类型。相反,元素类型是键类型和值类型的 KeyValuePair。
字典遍历示例 foreach (KeyValuePair<string, string> kvp in myDictionary)
{
string key = kvp.Key;//key包含了字典里的键
for (int i = 0; i < kvp.Value.Count; i++)
{
Response.Write(kvp.Value[i]);
}
}
示例:
代码
Dictionary<string, int> dic = new Dictionary<string, int>();
//添加两个键为"成绩1","成绩2";并为它们的值赋为0
dic["成绩1"] = 0;
dic["成绩2"] = 0;
// 把这两个值分别加1
dic["成绩1"]++;
dic["成绩2"]++;
索引器、哈希表Hashtabl、字典Dictionary(转)的更多相关文章
-
哈希表和字典List和Ilist和array和arraylist的应用
string x = string.Empty; string y = string.Empty; Hashtable ht = new Hashtable(); ...
-
C#集合类:动态数组、队列、栈、哈希表、字典(转)
1.动态数组:ArrayList 主要方法:Add.AddRange.RemoveAt.Remove 2.队列:Queue 主要方法:Enqueue入队列.Dequeue出队列.Peek返回Queue ...
-
C#集合类:动态数组、队列、栈、哈希表、字典
1.动态数组:ArrayList 主要方法:Add.AddRange.RemoveAt.Remove 2.队列:Queue 主要方法:Enqueue入队列.Dequeue出队列.Peek返回Queue ...
-
.net 哈希表和字典的基本用法
哈希表 传送门:https://www.cnblogs.com/xpvincent/archive/2013/01/15/2860841.html using System; using System ...
-
数据结构图解(递归,二分,AVL,红黑树,伸展树,哈希表,字典树,B树,B+树)
递归反转 二分查找 AVL树 AVL简单的理解,如图所示,底部节点为1,不断往上到根节点,数字不断累加. 观察每个节点数字,随意选个节点A,会发现A节点的左子树节点或右子树节点末尾,数到A节点距离之差 ...
-
使用python实现哈希表、字典、集合
哈希表 哈希表(Hash Table, 又称为散列表),是一种线性表的存储结构.哈希表由一个直接寻址表和一个哈希函数组成.哈希函数h(k)将元素关键字k作为自变量,返回元素的存储下标. 简单哈希函数: ...
-
repeater绑定数组、哈希表、字典 ArrayList/HashTable,Dictionary为datasource
原文发布时间为:2009-11-19 -- 来源于本人的百度文章 [由搬家工具导入] repeater绑定数组、哈希表、字典datasource为ArrayList/HashTable,Diction ...
-
C#哈希表(HashTable)和Dictionary比较
添加数据时Hashtable快.频繁调用数据时Dictionary快. Dictionary<K,V>是泛型的,当K或V是值类型时,其速度远远超过Hashtable. using Syst ...
-
从Dictionary源码看哈希表
一.基本概念 哈希:哈希是一种查找算法,在关键字和元素的存储地址之间建立一个确定的对应关系,每个关键字对应唯一的存储地址,这些存储地址构成了有限.连续的存储地址. 哈希函数:在关键字和元素的存储地址之 ...
随机推荐
-
Linux启动界面切换:图形界面-字符界面(转)
Linux字符界面切换到图形界面 由字符界面切换到图形界面可用两种简单方法实现: 1.在字符界面输入startx或init 5 . 2.通过编辑/etc/inittab文件实现默认进入图形界面. 把其 ...
-
centos安装
转:http://www.cnblogs.com/Johness/archive/2012/12/03/2800126.html 在已经安装了Win7的系统下安装CentOS 注意:1.由于涉及到对硬 ...
-
node.js:怎样同时执行多条SQLs,且只有一个回调
本文主要介绍开源node.js库mysql-queries,其可以同时执行多条SQLs,且只有一个回调.同时抛砖引玉,与大家交流node.js开发经验. node.js很大的特点就是事件驱动.非阻塞和 ...
-
Android进阶笔记03:Android应用中实现查看";附近的人";的功能
1. 要实现" 附近的人" 这功能,然后就研究了下: (1)首先要做的就是要获取到自己当前位置的经纬度(编程获取手机GPS定位模块的信息,进而获取自己当前位置的经纬度) (2)然后 ...
-
PHP 中变量的间接引用
请看以下代码: <?php $name="Yshy"; $$name="Yanshiying"; echo $Yshy; ?> 在浏览器端将会输出: ...
-
java的常见异常与错误总结
算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...
-
MyBatis3系列__06查询的几点补充
关于查询的一点补充: 当查询部门信息时,希望查询该部门下的所有员工,下面会采取两种方式实现: 1.联合查询 public Department getDeptWithEmpById(Integer i ...
-
FPM五:拆解前面的四——OVP做查询和结果
说明:前面的例子是将list和search放到一个Feeder Class里的,这里来做拆解分步说明. 1.创建SEARCH的结构 2.创建RESULT的结构 表类型(不用表类型的话,需要自己在cla ...
-
《剑指offer》用两个栈实现队列
本题来自<剑指offer> 用两个栈实现队列 题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 队列定义:先进先出 栈定义:先进后出 要 ...
-
SQL Server索引误区使用建议
常见的误区: 1.数据库不需要索引 2.主键总是聚集的 3.联机索引操作不引起阻塞 4.复合索引下列的顺序不重要 5.聚集索引以物理顺序存储 6.填充因子可以应用在索引的插入过程中 7.每个表应该有聚 ...