/// <summary>
        /// 初始化一个Dic
        /// </summary>
        public static void mainTest()
        {
            Dictionary<String, Int32> dic = new Dictionary<String, Int32>();
            dic.Add("1", 1);
            dic.Add("2", 2);
            dic.Add("3", 3);

Console.WriteLine("Org=============");
            foreachTravelDic(dic);

modifyDic1(dic);
            Console.WriteLine("modify1============="); foreachTravelDic(dic); modifyDic2(dic); Console.WriteLine("modify2=============");
            foreachTravelDic(dic);

Console.ReadKey();
        }

        /// <summary>
/// foreach遍历Dictionary
/// </summary>
/// <param name="dic"></param>
public static void foreachTravelDic(Dictionary<String, Int32> dic)
{
foreach (KeyValuePair<String, Int32> kvp in dic)
{
Console.WriteLine(String.Format("Key:{0}; Value:{1}", kvp.Key, kvp.Value));
//dic[kvp.Key] = 2;//此操作会报错
}
} /// <summary>
///使用dic.Keys.ToArray方法遍历时更改Dic
/// </summary>
/// <param name="dic"></param>
private static void modifyDic2(Dictionary<String, Int32> dic)
{
String[] keyStr = dic.Keys.ToArray<String>();
for (int i = 0; i < keyStr.Length; i++)
{
dic[keyStr[i]] = dic[keyStr[i]] + 22;
}
} /// <summary>
/// 使用dic.Keys.CopyTo方法遍历时更改Dic
/// </summary>
/// <param name="dic"></param>
private static void modifyDic1(Dictionary<String, Int32> dic)
{
int dicCount = dic.Keys.Count;
String[] strKey = new String[dicCount];
dic.Keys.CopyTo(strKey, 0);//支持.net2.0
for (int i = 0; i < strKey.Length; i++)
{
if (dic.ContainsKey(strKey[i]))
{
dic[strKey[i]] = dic[strKey[i]] + 11;
}
}
}

output:

Org=============
Key:1; Value:1
Key:2; Value:2
Key:3; Value:3
modify1=============
Key:1; Value:12
Key:2; Value:13
Key:3; Value:14
modify2=============
Key:1; Value:34
Key:2; Value:35
Key:3; Value:36

摘自:http://www.cnblogs.com/softidea/archive/2013/09/27/3342941.html

Dictionary的遍历和修改的更多相关文章

  1. C# DIctionary:集合已修改,可能无法执行枚举操作

    C#中直接对集合Dictionary进行遍历并修改其中的值,会报错,如下代码就会报错:集合已修改;可能无法执行枚举操作.代码如下 public void ForeachDic() { Dictiona ...

  2. Python面试题目之(针对dict或者set数据类型)边遍历 边修改 报错dictionary changed size during iteration

    # result 是一个字典, 把里面属性值是None的属性删除 for key in result: if not result[key]: del result[key] continue 但是报 ...

  3. jackson中JSON字符串节点遍历和修改

    有些场景下,在实现一些基础服务和拦截器的时候,我们可能需要在不知道JSON字符串所属对象类型的情况下,对JSON字符串中的某些属性进行遍历和修改,比如,设置或查询一些报文头字段. 在jackson中, ...

  4. c# Dictionary的遍历和排序

    c# Dictionary的遍历和排序 c#遍历的两种方式 for和foreach for: 需要指定首位数据.末尾数据.数据长度: for遍历语句中可以改变数据的值: 遍历规则可以自定义,灵活性较高 ...

  5. C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素

    01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...

  6. 遍历并修改dictionary的值

    var dictionary = clb_Select.Items.Cast<object>().ToDictionary(item => item.ToString(), item ...

  7. NSArray遍历和修改崩溃

    //一.代码 NSArray *array = [self.dataList mutableCopy]; 或 NSArray *array = [NSArray arrayWithArray:self ...

  8. c# Dictionary的遍历和排序(转)

    c#遍历的两种方式 for和foreach for: 需要指定首位数据.末尾数据.数据长度: for遍历语句中可以改变数据的值: 遍历规则可以自定义,灵活性较高 foreach: 需要实现ienume ...

  9. POJ3276(遍历+区间修改)

    http://poj.org/problem?id=3276 题意:n(n<=5000)头牛站成线,有朝前有朝后的的,然后每次可以选择大小为k的区间里的牛全部转向,会有一个最小操作m次使得它们全 ...

随机推荐

  1. spring定时任务的配置使用

    spring的定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 1.定义任务 <!--要定时执行的方法--> <bean id="testTas ...

  2. Javascript禁止网页复制粘贴效果,或者复制时自动添加来源信息

    一.禁止复制 使用方法:在oncopy事件中return false oncopy="return false;" 1.禁止复制网页内容 <body oncopy=" ...

  3. JavaScript如何获取css属性

    原文:JavaScript如何获取css属性 在web开发中,很多时候我们需要用JavaScript对网页的样式进行修改,接下来,我们就来看一下我们该如何访问css属性,针对不同情况及案例来进行分析. ...

  4. ServletContextListener作用(转)

    ServletContext 被 Servlet 程序用来与 Web 容器通信.例如写日志,转发请求.每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享.因为Context可 ...

  5. hadoop-2.0.0-cdh4.2.1源码编译总结

    经过一个星期多的努力,这两个包的编译工作总算告一段落. 首先看一下这一篇文章: 在eclipse下编译hadoop2.0源码 http://www.cnblogs.com/meibenjin/arch ...

  6. 为什么不走INDEX FAST FULL SCAN呢

    INDEX FULL SCAN 索引全扫描.单块读 .它扫描的结果是有序的,因为索引是有序的.它通常发生在 下面几种情况(注意:即使SQL满足以下情况 不一定会走索引全扫描) 1. SQL语句有ord ...

  7. R语言 数据的输入方式总结

    1.使用C函数连接数据 2.使用c,cbind,rbind结合变量 3.使用Vector函数结合数据 4.使用矩阵结合数据5.使用data.frame函数结合数据 6.使用list函数结合数据 c 向 ...

  8. -_-#【JS】隐含全局变量

    隐含全局变量与明确定义的全局变量有细微的不同,不同之处在于能否使用delete操作符撤销变量 使用var创建的全局变量(这类变量在函数外部创建)不能删除不使用var创建的隐含全局变量(尽管它是在函数内 ...

  9. poj 2425 A Chess Game(SG函数)

    A Chess Game Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 3551   Accepted: 1440 Desc ...

  10. HashMap和Hashtable

    HashTable 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的  速 ...