可重复键值的SortedList集合实现

  SortedList表示键/值对的集合,这些键值对按键排序且可以按索引进行查询访问。但默认情况下,此集合不可存储具有相同健的数据,而有时我们又需要存储这样的具有重复键值的集合,如结构上同一个单元上可能同时施加了不同工况下的荷载,如何实现这样的集合呢?

  其实,.net中是用一个Compare函数来对添加到集合中的键进行比较的,只要这个函数返回的值不等于0,就可以正常向集合添加数据。网上找了个C#的例子,如下:

using System;
using System.Collections;

namespace testSortedList
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            //声明可重复键的链表
            SortedList sl = new SortedList(new MySort());
            sl.Add(333, 333);
            sl.Add(111, 111);
            sl.Add(222, 222);
            sl.Add(111, 112);

            PrintList(sl);

            Console.ReadLine();
        }

        private static void PrintList(SortedList sl)
        {
            for (int i = 0; i < sl.Count; i++)
            {
                Console.WriteLine("{0}\t{1}",
                sl.GetKey(i), sl.GetByIndex(i));
            }
        }

    }
    //继承接口IComparer
    public class MySort : IComparer
    {
        #region IComparer 成员
        public int Compare(object x, object y)
        {
            return -1;
            //排序
            //int iResult = (int)x - (int)y;
            //if(iResult == 0) iResult = -1;
            //return iResult;
        }
        #endregion
    }
}

  上面代码不对SortedList进行排序,如果要实现自动排序功能,修改一下Compare函数为注释中的内容就可以了。


【轻松一下】:最近股市一天内创记录反弹了,谷歌也顺势推出了谷歌财经,可到底是不是已经触底了呢?专家学者仍众说纷纭,且不管它,看看这个《实话实说》版中国石油,笑过之后大家思索吧^_^