Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 如何让.NET中的强类型的排序列表SortedList支持重复键
【标  题】:如何让.NET中的强类型的排序列表SortedList支持重复键
【关键字】:.NET,SortedList
【来  源】:http://www.cnblogs.com/ericguo/archive/2007/02/20/generic_sortedlist_support_multikey.html

如何让.NET中的强类型的排序列表SortedList支持重复键

Your Ad Here

非强类型的SortedList如何支持重复键可以参照Pharaoh在2005年就写的blog:《不排序和可以重复key的SortedList》,强类型的SortedList同非强类型的一样可以支持重复键,并不像MSDN上所说的那样,“In either case, a SortedList does not allow duplicate keys.”。

比较非强类型的SortedList,强类型的SortedList需要综合应用C#泛型,接口,继承以及Singleton设计模式来实现,短短几十行代码还是很有点味道的,下面示例是一个允许DateTime键重复,按照DateTime先后顺序排序的一个事件队列的实现:

 1 internal class CEventListComparer : IComparer<DateTime>
 2 {
 3     static private CEventListComparer mono;
 4     public static CEventListComparer EarlyFirst
 5     {
 6         get
 7         {
 8             if (mono == null)
 9                 mono = new CEventListComparer();
10             return mono;
11         }
12     }
13 
14     #region IComparer
15     public int Compare(DateTime x, DateTime y)
16     {
17         if (x == y)
18             return -1;
19         else if (x < y)
20             return -1;
21         else
22             return 1;
23     }
24     #endregion
25 }
26 
27 internal class CEventList : SortedList<DateTime, IScheduleable>
28 {
29     public CEventList() : base(CEventListComparer.EarlyFirst)
30     {
31     }
32 
33     public IScheduleable PopEarlistSchedule(out DateTime newTime)
34     {
35         IScheduleable ish = null;
36         IEnumerator<KeyValuePair<DateTime, IScheduleable>> getFirst = GetEnumerator();
37         getFirst.MoveNext();
38         newTime = getFirst.Current.Key;
39         ish = getFirst.Current.Value;
40         RemoveAt(0);
41         return ish;
42     }
43 
44     internal void Schedule(DateTime ScheduledTime, IScheduleable ScheduledCall)
45     {
46         Add(ScheduledTime, ScheduledCall);
47     }
48 }

上面的事件队列(CEventList)正是我在编写的离散事件仿真程序的核心数据结构,是生产代码哦

非常糟糕的软件体验-购买燃气的经历:【上一篇】
我的毕设你帮忙:几个问题请有经验的高手进来看看~~春节快乐噢~:【下一篇】
【相关文章】
  • ASP.NET AJAX 动手教程系列,硬盘输出缓存和RSS工具包CodePlex项目,以及采访我的podcast
  • 今晚的 ASP.NET MVP 在线聊天活动
  • 大年三十整理的asp.net资料!
  • 解释:ASP.NET 2.0 中的 Windows 身份验证
  • VisualBasic.Net 2003实现NTFS文件附加数据流的读写类
  • CF.NET 2.0 通过cmwap访问外部webService。
  • RKWeb1.1 Asp.net开发模板 终于发布了
  • (日文)vb6于vb.net对比(长期更新)
  • ASP.NET AJAX调用Web Service
  • ASP.NET2.0自动搜索文件组成导航系统
  • 【随机文章】
  • DotText源码阅读(0)
  • Ajax裸奔之二
  • 在Asp.Net 2.0中使用Css Tab Design样式美化菜单
  • VC++之List Box/Check List Box控件
  • AIX常见问题整理 (8)
  • JAVA学前之准备
  • Debian加快系统速度
  • 动态规划法求多段图的最短路径
  • 天堂2 我也说说收集者
  • 通过Windows Live Alerts订阅博客园首页RSS
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.