C#SortedList可重复键的排序键/值对集合-创新互联

代码

网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于成都企业网站定制,高端网页制作,对被动防护网等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业营销推广优化,H5建站,响应式网站。

  public class Cost

  {

      public double cost;

      public int id;

  }

  public class CostComparer : IComparer

  {

      public int Compare(Cost x, Cost y)

      {

          if (x.cost - y.cost < 1e-10)

          {

              return -1;

          }

          else

          {

              return 1;

          }

      }

  }

错误的写法:

SortedList list = new SortedList(new CostComparer());\\XX

SortedList list = new SortedList(new CostComparer());\\XX

错误提示:

非泛型 类型“System.Collections.SortedList”不能与类型实参一起使用

可行的写法,浪费存储空间,SortedList并没有提供直接根据索引访问集合元素的方法,所以只能够通过其他的方法访问:

      SortedList list = new SortedList(new CostComparer());

      Cost c1 = new Cost();

      c1.cost = 20;

      c1.id = 30;

      list.Add(c1, c1);

      Cost c2 = new Cost();

      c2.cost = 10;

      c2.id = 40;

      list.Add(c2, c2);

//方法一GetEnumerator

      IEnumerator> iter = list.GetEnumerator();

      iter.MoveNext();  

      Cost tmpKey = iter.Current.Key;

      Cost tmpValue = iter.Current.Value;

//方法二foreach

      foreach (KeyValuePair t in list)

      {

          Cost tmpKey = t.Key;

          Cost tmpValue = t.Value;

      }

删除某个索引键值对:         list.RemoveAt(0);

但是为了简单起见,实际上,只是对Cost中的cost字段进行排序,并且支持重复插入,可以使用SortedSet

      SortedSet set = new SortedSet(new CostComparer());\\OK

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


本文题目:C#SortedList可重复键的排序键/值对集合-创新互联
文章起源:http://pwwzsj.com/article/ejjdo.html