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

c#遍历的两种方式 for和foreach

  for: 需要指定首位数据、末尾数据、数据长度; for遍历语句中可以改变数据的值; 遍历规则可以自定义,灵活性较高

  foreach: 需要实现ienumerator接口; 在遍历中不可以改变数据的值; 遍历规则只能是‘++‘ ; 但查询效率较高

Dictionary遍历方式:

Dictionary<string, int> list = new Dictionary<string, int>();
list.Add("d", 1);
//3.0以上版本
foreach (var item in list)
{
    Console.WriteLine(item.Key + item.Value);
}

//KeyValuePair<T,K>
foreach (KeyValuePair<string, int> kv in list)
{
    Console.WriteLine(kv.Key + kv.Value);
}

//通过键的集合取
foreach (string key in list.Keys)
{
    Console.WriteLine(key + list[key]);
}

//直接取值
foreach (int val in list.Values)
{
    Console.WriteLine(val);
}

//非要采用for的方法也可
List<string> test = new List<string>(list.Keys);
for (int i = 0; i < list.Count; i++)
{
    Console.WriteLine(test[i] + list[test[i]]);
}

List排序:

            Hashtable ht=new Hashtable(); 

            ht.Add("E","e");
            ht.Add("A","a");
            ht.Add("C","c");
            ht.Add("B","b");

             ArrayList lst=new ArrayList(ht.Keys);
             lst.Sort();
             foreach(string key in lst)
             {
                 listBox1.Items.Add("key:" + key + "  vlaue:"+ht[key]);
             }            

Dictionary排序

  排序思路:

  1>用一个List保存Dictionary的数据

  2>对新的List进行排序

  3>从List获取排序好的值,重新添加进Dictionary

 protected Dictionary<string, int> SortDictionary_Desc(Dictionary<string, int> dic)
        {
            List<KeyValuePair<string, int>> myList = new List<KeyValuePair<string, int>>(dic);
            myList.Sort(delegate(KeyValuePair<string, int> s1, KeyValuePair<string, int> s2)
            {
                return s2.Value.CompareTo(s1.Value);
            });
            dic.Clear();
            foreach (KeyValuePair<string, int> pair in myList)
            {
                dic.Add(pair.Key, pair.Value);
            }
            return dic;
        }

        protected Dictionary<string, int> SortDictionary_Asc(Dictionary<string, int> dic)
        {
            List<KeyValuePair<string, int>> myList = new List<KeyValuePair<string, int>>(dic);
            myList.Sort(delegate(KeyValuePair<string, int> s1, KeyValuePair<string, int> s2)
            {
                return s1.Value.CompareTo(s2.Value);
            });
            dic.Clear();
            foreach (KeyValuePair<string, int> pair in myList)
            {
                dic.Add(pair.Key, pair.Value);
            }
            return dic;
        }

时间: 2024-10-25 09:17:11

c# Dictionary的遍历和排序(转)的相关文章

c# Dictionary的遍历和排序

原文链接:http://www.cnblogs.com/eye-like/p/4155943.htmlc#遍历的两种方式 for和foreach for: 需要指定首位数据.末尾数据.数据长度: for遍历语句中可以改变数据的值: 遍历规则可以自定义,灵活性较高 foreach: 需要实现ienumerator接口: 在遍历中不可以改变数据的值: 遍历规则只能是'++' : 但查询效率较高 Dictionary遍历方式: Dictionary<string, int> list = new D

C# Dictionary 的几种遍历方法,排序

Dictionary<string, int> list = new Dictionary<string, int>(); list.Add("d", 1); //3.0以上版本 foreach (var item in list) { Console.WriteLine(item.Key + item.Value); } //KeyValuePair<T,K> foreach (KeyValuePair<string, int> kv

转 :asp教程.net c#数组遍历、排序、删除元素、插入、随机元素 数组遍历

asp教程.net c#数组遍历.排序.删除元素.插入.随机元素数组遍历 short[] sts={0,1,100,200};for(int i=0;i<sts.lenght;i++){  if(sts[i]>50) {  .....  }} 数组随机元素 public  hashtable  noorder(int count)         {             arraylist mylist = new arraylist();             hashtable ha

HashMap的遍历和排序

1.HashMap的遍历 package com.sheepmu; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class KMPText { public static void main(String[] args) { Map<String,String> map=new HashMap<String,Str

UVA 10815-Andy&#39;s First Dictionary(字符串模拟+排序+重复删除)

Andy's First Dictionary Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description Problem B: Andy's First Dictionary Time limit: 3 seconds Andy, 8, has a dream - he wants to produce his very own dictionary. This

[java学习笔记]java语言基础概述之数组的定义&amp;常见操作(遍历、排序、查找)&amp;二维数组

1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一旦创建,必须明确长度)          格式1:              元素类型   [ ]  数组名  =  new  元素类型  [元素个数即数组的长度]:              示例:int[] array = new int[5];          格式2:           

OC 遍历及排序

// main.m #import <Foundation/Foundation.h> #import "person.h" int main(int argc, const char * argv[]) { //数组遍历 //原理:通过for循环的循环变量?用作数组元素下标来获取不同下标的 元素. // 循环次数就是数组元素的个数.: // NSArray *cityarray=[NSArray arrayWithObjects:@"北京",@&quo

数组操作之遍历,排序,逆序

数组遍历: 索引遍历 枚举遍历: NSEnumerator* enumerator = [array objectEnumerator]; id e = nil; while (e = [enumerator nextObject]) { NSLog(@"e = %@", e); } 代码块遍历: // 示例1:枚举遍历 [array enumerateObjectsUsingBlock:^ (id obj, NSUInteger idx, BOOLBOOL *stop){ NSLog

C#中hashtable的赋值、取值、遍历、排序操作

一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的值.Hashtable中key/value键值对均为object类型,所以Hashtable可以支持任何类型的key/value键值对. 二,哈希表的简单操作 在哈希表中添加一个key/value键值对: Hasht