C#SortedList可重复键的排序键/值对集合

代码

西丰网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联

    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


网页名称:C#SortedList可重复键的排序键/值对集合
标题路径:http://ybzwz.com/article/jspidi.html