java dictionary遍历_C# Dictionary 的几种遍历方法
网上看到的,记录下来,供参考,备忘
Dictionary list = new Dictionary();
list.Add("d", 1);//3.0以上版本
foreach (var item inlist)
{
Console.WriteLine(item.Key+item.Value);
}//KeyValuePair
foreach (KeyValuePair kv inlist)
{
Console.WriteLine(kv.Key+kv.Value);
}//通过键的集合取
foreach (string key inlist.Keys)
{
Console.WriteLine(key+list[key]);
}//直接取值
foreach (int val inlist.Values)
{
Console.WriteLine(val);
}//非要采用for的方法也可
List test = new List(list.Keys);for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(test[i]+list[test[i]]);
}
Dictionary( TKey , TValue )
表示键和值的集合。
Dictionary( TKey, TValue) 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary( TKey, TValue) 类是作为一个哈希表来实现的。(检索速度取决于为 TKey 指定的类型的哈希算法的质量。)
只要对象用作 Dictionary( TKey, TValue) 中的键,它就不能以任何影响其哈希值的方式更改。使用字典的相等比较器比较时,Dictionary( TKey, TValue) 中的任何键都必须是唯一的。键不能为 null 。 但是如果值类型 TValue 为引用类型,该值则可以为空。
Dictionary( TKey, TValue) 需要一个相等实现来确定键是否相等。可以使用一个接受 comparer 参数的构造函数来指定 IEqualityComparer( T) )泛型接口的实现;如果不指定实现,则使用默认的泛型相等比较器 EqualityComparer( T) ) . Default 。如果类型 TKey 实现 System. IEquatable ) > )泛型接口,则默认相等比较器会使用该实现。
Dictionary( TKey, TValue) 的容量是 Dictionary( TKey, TValue) 可以包含的元素数。当向 Dictionary( TKey, TValue) 中添加元素时,将通过重新分配内部数组来根据需要自动增大容量。
对于枚举而言,字典中的每一项都被视为一个表示值及其键的 KeyValuePair( TKey, TValue)结构进行处理。项返回的顺序未定义。
C# 语言的 foreach 语句(在 C++ 中为 for each ,在 Visual Basic 中为 For Each )需要集合中每个元素的类型。由于 Dictionary( TKey, TValue) 是键和值的集合,因此元素类型并非键类型或值类型。相反,元素类型是键类型和值类型的 KeyValuePair( TKey, TValue)。例如:
此类型的公共静态(在 Visual Basic 中为 Shared )成员是线程安全的。但不能保证任何实例成员是线程安全的。
只要不修改该集合,Dictionary( TKey, TValue) 就可以同时支持多个阅读器。即便如此,从头到尾对一个集合进行枚举本质上并不是一个线程安全的过程。当出现枚举与写访问互相争用这种极少发生的情况时,必须在整个枚举过程中锁定集合。若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。
///summary ///通过DictionaryK,V传递参数 summary ///paramname=sql/param ///paramname=parms/param ///returns/returns public static SqlDataReaderExecuteReader( string sql,Dictionary string , string parms) { SqlDataReadersqlReader= null ;
///
///通过Dictionary传递参数///
///
///
///
public static SqlDataReader ExecuteReader(string sql, Dictionaryparms)
{
SqlDataReader sqlReader= null;
SqlConnection sqlConn= newSqlConnection(conStr);
SqlCommand sqlCmd= newSqlCommand(sql, sqlConn);foreach (string key inparms.Keys)
{
sqlCmd.Parameters.Add("@" +key, parms[key]);
}
sqlConn.Open();
sqlReader=sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);returnsqlReader;
}
调用如下:=============
public UserRole GetRoleByID(introleId)
{string sql = string.Format("select id roleid,rolename from userrole where id=@ID",roleId);
Dictionary sqlParams = new Dictionary();
sqlParams.Add("ID",roleId.ToString());
UserRole ur=null;using (SqlDataReader sqlReader =DBHelper.ExecuteReader(sql,sqlParams))
{while(sqlReader.Read())
{
ur= new UserRole((int)sqlReader["roleid"], sqlReader["rolename"].ToString());
}
sqlReader.Close();
}returnur;
}
java dictionary遍历_C# Dictionary 的几种遍历方法相关推荐
- 有向图的广度优先遍历_图的两种遍历方式
1 引言 遍历是指从某个节点出发,按照一定的的搜索路线,依次访问对数据结构中的全部节点,且每个节点仅访问一次. 在二叉树基础中,介绍了对于树的遍历.树的遍历是指从根节点出发,按照一定的访问规则,依次访 ...
- Java针对ArrayList自定义排序的2种实现方法
这篇文章主要介绍了Java针对ArrayList自定义排序的2种实现方法,结合实例形式总结分析了Java操作ArrayList自定义排序的原理与相关实现技巧,下面就和动力节点java学院小编一起来看看 ...
- java实现二叉树的构建以及3种遍历方法
目录: 1.把一个数组的值赋值给一颗二叉树 2.具体代码 1.树的构建方法 package tree; import java.util.LinkedList; import java.util.Li ...
- Java实现二叉树的创建与四种遍历方式(前,中,后,层)
文章目录 1.二叉树节点的创建 2.二叉树的先序遍历 3.二叉树的中序遍历 4.二叉树的后序遍历 5.二叉树的层序遍历
- Java中关于Arrays.sort的两种重载方法的理解
前言 在java中重载排序方法的方法目前有两种,一种是实现Comparable接口的compareTo方法,还有一种是用比较器(comparator) 作为参数,其中比较器是实现了Comparator ...
- Java Map集合常用API及3种遍历方式
1.map的常用API map是双列集合的顶层接口,是所有的双列集合都可以继承使用 2.使用Map集合 //1.创建Map集合的对象Map<String, String> m = new ...
- java克隆(clone)的两种实现方法
1概念 由java API文档可知: clone 属于 java.long.Object的一个方法 protected Object clone() throws CloneNotSupportedE ...
- java防止暴力破解用户名的5种常见方法
系统的账号密码如果被破解了,对我们的整个系统都是巨大隐患. 通常情况下,我们会使用以下方法阻止黑客破解账号密码: 1.网站管理入口禁止使用弱口令帐号,建议使用复杂口令,比如:大小写字母与数字的组合,口 ...
- 根据树的两种遍历序列求第三种遍历序列
只知道先序序列和后序序列是无法求出唯一的树,所以不做讨论. #include<iostream> #include<cstdio> #include<cstring> ...
最新文章
- 带你了解DDoS攻击的原理,让你轻松学会DDoS攻击原理及防护措施
- 删除所有的视图,存储过程
- 【CodeForces - 616C】The Labyrinth(bfs,并查集,STLset)
- linux 启动db2 服务器,Linux系统设置DB2等服务开机启动的过程
- matlab进行特征缩放,机器学习中(Feature Scaling)特征缩放处理的matlab实现方式
- npm notice created a lockfile as package-lock.json. You should commit this file.
- 黑马day16 aptana插件的安装
- 文件储存php源码,求php后台代码 保存图片文件
- 机器人动力学与控制学习笔记(二)————机器人动力学建模
- LayUI动态添加table表格
- short java_java基本数据类型short的使用(23)
- windows server中opencv运行过程中MF.dll/MFReadWrite.dll/MFPlat.DLL文件丢失问题解决
- Flink之Source
- P****cms简单去版权,不逆向dll,只是简单的隐藏掉而已
- 计算机网络技术 李晓峰,计算机网络技术3(吉林大学李晓峰).ppt
- Java-for循环打印1-100奇数
- 计算机科学排名清华第一,最新全球计算机科学排名:清华力压CMU排名第一
- 高通平台上的AMSS(Modem端) windows环境搭建
- LOWORD, HIWORD, LOBYTE, HIBYTE
- X2000 halley5开发板,烧写uboot,kernel,文件系统到开发板
热门文章
- “Paper + Code”加量豪华套餐 | PaperDaily #04
- 用户解锁不存在_解锁手机有6种方法,这些常识你知道吗?小白购机指南——解锁篇...
- Greenplum【问题记录 01】资源组配置后GPCC用户无法认证登录
- 计算机360浏览器的大小,360安全浏览器8.1电脑正式版
- 这都2021年了,还不会Feign性能调优?Feign性能调优之gzip压缩实现-自娱自乐篇
- Ⅰ:zookeeper的单机安装 - 详细教程
- spring boot实现导出数据到excel
- TensorFlow——在web.py、Django环境下TensorFlow(Keras、tf.keras)加载和使用多模型失败解决方案
- Typora——恢复未保存文件解决方案
- Codeforces 1196E Connected Component on a Chessboard