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