SortList 默认对按Key来排序,且Key值不能重复,但有时可能需要用有重复值的Key来排序,以下是实现方式:

1、对强类型:以float为例

#region 使SortList能对重复键排序

internal class ListComparer : IComparer<float>
    {
        static private ListComparer mono;
        public static ListComparer EarlyFirst
        {
            get
            {
                if (mono == null)
                    mono = new ListComparer();
                return mono;
            }
        }

#region IComparer 成员
        public int Compare(float x, float y)
        {
            if (x == y)
                return -1;
            else if (x < y)
                return -1;
            else
                return 1;
        }
        #endregion

}

internal class CList : SortedList<float, int>
    {
        public CList()
            :base(ListComparer.EarlyFirst)
        {
        }
    }
    #endregion

用法:直接用CList类代替SortedList类

2、对非强类型:

首先要实现IComparer接口

internal class ListComparer : 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

}

用法:

SortList  st=new SortList(new ListComparer());

st.add(11,23);

st.add(22,23);

st.add(11,23);

输出结果是11,11,22

使 SortList 实现重复键排序的更多相关文章

  1. 利用Linux命令行进行文本按行去重并按重复次数排序

    最近杂事太多,正事进展缓慢.Fighting! linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去重并按重 ...

  2. 使用multimap创建重复键关联容器

    在“使用 <map> 库创建关联容器”一文中,我们讨论了标准库中的 map 关联容器.但那只是 map 容器的一部分.标准库还定义了一个 multimap 容器,它与 map 类似,所不同 ...

  3. 普林斯顿大学算法课 Algorithm Part I Week 3 重复元素排序 - 三路快排 Duplicate Keys

    很多时候排序是为了对数据进行归类,这种排序重复值特别多 通过年龄统计人口 删除邮件列表里的重复邮件 通过大学对求职者进行排序 若使用普通的快排对重复数据进行排序,会造成N^2复杂度,但是归并排序和三路 ...

  4. python之itemgetter函数:对字典列表进行多键排序

    itemgetter函数:对字典列表进行多键排序 from operator import itemgetter list_people = [ {'name': 'Mike', 'age': 22, ...

  5. 通过编写PHP代码并运用“正则表达式”来实现对试题文档进行去重复、排序

    通过编写PHP代码并运用“正则表达式”来实现对试题文档进行去重复.排序 <?php $subject = file_get_contents('test.txt'); $pattern = '/ ...

  6. 不能在具有唯一索引“IX_******”的对象“dbo.****”中插入重复键的行。重复键值为 (110, 372000, 2)。

    当尝试插入数据,或者更新某个表的时候出现 不能在具有唯一索引“IX_******”的对象“dbo.****”中插入重复键的行.重复键值为 (110, 372000, 2). 遇到这个问题的时候,请找到 ...

  7. java算法面试题:从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 ;读取docx 读取doc 使用poi 相关jar包提集提供下载

    从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 1,张三,28 2,李四,35 3,张三,28 4,王五,35 5,张三,28 6,李四,35 7,赵六,28 ...

  8. vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素。

    1.vector是序列式容器而set是关联式容器.set包含0个或多个不重复不排序的元素.也就是说set能够保证它里面所有的元素都是不重复的.另外对set容器进行插入时可以指定插入位置或者不指定插入位 ...

  9. SQL忽略重复键作用

    1.插入时如果开启的话,发现重复键会忽略,否则报错 2.更新时不管开启是否都会报错

随机推荐

  1. 【Markdown】notepad++ 支持 markdown语法、预览

    Notepad++中支持Markdown   最近在学习Markdown语言的使用,很想在XP主机上使用Markdown的离线编辑器,但MarkdownPad.作业部分的离线客户端都不能再XP上运行, ...

  2. hadoop(一):深度剖析hdfs原理

    在配置hbase集群将 hdfs 挂接到其它镜像盘时,有不少困惑的地方,结合以前的资料再次学习;  大数据底层技术的三大基石起源于Google在2006年之前的三篇论文GFS.Map-Reduce. ...

  3. EtherCAT报文寻址

    EtherCAT通信通过主站发送EtherCAT数据帧读写从站设备的内部存储区实现. 一个EtherCAT网段相当于一个以太网设备,主站首先通过以太网数据帧头的MAC地址寻址到网段,然后使用Ether ...

  4. Selenium webdriver 学习总结-元素定位

    Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要 ...

  5. HDU4870 Rating(概率)

    第一场多校,感觉自己都跳去看坑自己的题目里去了,很多自己可能会比较擅长一点的题目没看,然后写一下其中一道概率题的题解吧,感觉和自己前几天做的概率dp的思路是一样的.下面先来看题意:一个人有两个TC的账 ...

  6. [Git] Git 文件归档, include submodule

      git archive命令,可以对任意提交对应的目录树建立归档. $ git archive -o latest.zip HEAD  基于最新提交建立归档文件latest.zip $ git ar ...

  7. 安装chocolatey

    C:\> @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.web ...

  8. jQuery过滤选择器

    //基本过滤器$('li:first').css('background','#ccc');//第一个元素$('li:last').css('background','red');//最后一个元素$( ...

  9. 数字型 、String字符串转换

    Java代码 收藏代码 String str = "1,2,3,4,5,6" public int[] StringtoInt(String str) { int ret[] = ...

  10. 拷贝Java项目报错

    经常需要将一个项目,导出,然后发给同事,或者是自己用另一个Eclipse工具打开. 这时,导入项目后,就会出现各种各样的问题.大牛笔记:www.weixuehao.com 代码相同,环境不同,主要是修 ...