目录

介绍

使用这个混乱


使用集合作为键可以使复杂的功能构造更轻松地用C#表示。这段代码提供了两个类,可以对集合进行有序或无序的相等比较,以便它们可用作字典和集合中的键。

• 下载Comparers-master.zip-10.5 KB

介绍

有时,当用C#表达复杂的算法时,您可能发现自己需要根据一组项目而不是单个项目来查找某些信息。Stock.NET提供了一些通过LINQ进行此操作的功能,但它并不是通用的,例如Dictionary<TKey,TValue> 可以使用它。

这个小库旨在提供两种比较方式,以使这些类型的操作变得容易。

使用这个混乱

注意事项

键不应该是可变的,但是由于集合的工作方式,这些键在不应该是可变的时是可变的。不要修改用作键的集合!它将导致您讨厌的错误。

该库公开了两个类,OrderedCollectionEqualityComparer<T>和UnorderedCollectionEqualityComparer<T>,分别提供有序和无序比较。他们致力于实现IList<T>、ICollection<T>或ISet<T>的任何工作。无序比较可能会很昂贵,但是为您的集合使用HashSet<T>可以加快一些速度。您可以使用这些类来提供Dictionary<TKey, TValue>和HashSet<TKey, TValue>来比较集合而不是单个项。演示代码指示如何使用它们:

// create a new hashset that uses ordered collection comparisons
var set = new HashSet<int[]>(OrderedCollectionEqualityComparer<int>.Default);
// add a collection:
set.Add(new int[] { 1, 2, 3, 4, 5 });// true:
Console.WriteLine("Ordered cmp - contains 1-5: " + set.Contains(new int[] { 1, 2, 3, 4, 5 }));
// false:
Console.WriteLine("Ordered cmp contains 5-1: " + set.Contains(new int[] { 5, 4, 3, 2, 1 }));// create a new hashset that uses unordered collection comparisons
set = new HashSet<int[]>(UnorderedCollectionEqualityComparer<int>.Default);
set.Add(new int[] { 1, 2, 3, 4, 5 });// true:
Console.WriteLine("Unordered cmp - contains 1-5: " + set.Contains(new int[] { 1, 2, 3, 4, 5 }));
// true:
Console.WriteLine("Unordered cmp contains 5-1: " + set.Contains(new int[] { 5, 4, 3, 2, 1 }));

在C#中将集合用作键相关推荐

  1. 用作键提取器的函数的 Boost.MultiIndex 示例

    用作键提取器的函数的 Boost.MultiIndex 示例 实现功能 C++实现代码 实现功能 用作键提取器的函数的 Boost.MultiIndex 示例 C++实现代码 #if !defined ...

  2. c#中将集合写入文本_在C#中将记录插入MySQL数据库

    c#中将集合写入文本 In the last tutorial (how to connect with MySQL database in C#?), we learned about making ...

  3. jtoken判断是否包含键_Redis源码解析十三--有序集合类型键实现(t_zset)

    有序集合类型键实现 1. 有序集合命令 Redis有序集合命令如下表所示:Redis 有序集合命令详解 2. 有序集合类型实现 有序集合对象的底层实现类型如下表: 关于底层的数据结构剖析和实现,请看如 ...

  4. python检索用人名查电话_创建一个将人名用作键的字典后,输入姓名查找值,返回错误...

    创建了将人名用作键的字典,输入姓名查找值,返回错误. 代码: people={ 'Alice': { 'phone': '6789', 'addr': 'Ruan road 23' }, 'Mary' ...

  5. 练习6-11 城市:创建一个名为 cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应

    练习6-11 城市 :创建一个名为 cities 的字典,其中将三个城市名用作键:对于每座城市,都创建一个字典,并在其中包含该城市所属的国家.人口约数以及一个有关该城市的事实.在表示每座城市的字典中, ...

  6. python人名查电话(字典)_python检索用人名查电话_创建一个将人名用作键的字典后,输入姓名查找值,返回错误......

    创建了将人名用作键的字典,输入姓名查找值,返回错误. 代码: people={ 'Alice': { 'phone': '6789', 'addr': 'Ruan road 23' }, 'Mary' ...

  7. Java程序创建Map集合,创建Emp对象,并将Emp对象添加到集合中(Emp对象的id作为Map集合的键),并将id为015的对象从集合中移除。

    package javase14; /* Emp对象的id作为Map集合的键 */ public class Emp {private String e_id;private String e_nam ...

  8. java——集合——Map集合——Map集合遍历键找值方式

    Map集合遍历键找值方式 Map集合的第一种遍历方式:通过键找值的方式 Map集合中的方法: SetkeySet() 返回此映射中包含的键的 Set 视图. 实现步骤: 1.使用Map集合中的方法ke ...

  9. 遍历Map集合的键值对

    方法一: import java.util.*; public class test2 {public static void main(String[] args) {Map<String, ...

最新文章

  1. matlab神经网络每次相差大,GA-BP网络为什么每次训练的结果相差很大呢?
  2. 代码内查找函数引用_叮~~二级操作题 excel常考函数大梳理
  3. html字体变大自动换行,网页css中实现字符超出宽度自动换行和英语字符不断行的解决方法...
  4. java多态的两种形式_java核心(八):继承与方法重写、final、多态性的两种描述形式...
  5. LZW算法PHP实现方法 lzw_decompress php
  6. web安全day17:天天都在说的中间人攻击到底是啥
  7. 【ML小结9】聚类分析--k均值聚类
  8. Java调用OpenDDS(2)-理解OpenDDS自带的Messager示例
  9. 埃氏筛法求区间内素数并输出
  10. 超强文本编辑器SciTE配置方法详细实例
  11. 【进阶】QQ聊天机器人--群聊机器人篇
  12. 用vs打开已有web项目运行时显示网页无法访问
  13. 计算机手速如何学,拼不过手速的你,来学学这些操作
  14. zzuli 2126 tmk买礼物 思维题
  15. 盘点适合入门学习的C/C++开源项目
  16. 高质量的视频播放往往只需要一个m3u8文件 视频流搞起来
  17. RDKit入门教程(2)——利用RDKit获取分子指纹
  18. 万圣节元素矢量图案 Halloween Vector Pattern
  19. 美的2021高频题汇总 | 备战春招,刷这30题就够了!
  20. 学了Python之后,都能干点啥?

热门文章

  1. 制度化规范化标准化精细化_制度化、标准化、流程化,走向精细化管理的蜕变...
  2. html数字自动滚动代码怎么写,你可能需要这样的大屏数字滚动效果
  3. 如何将两部手机内容互换_两部iPhone手机之间如何大量互传照片?
  4. 圣诞节海报这么做?不妨借鉴下这些模板!
  5. win10怎么在网络里查看win7计算机,网络共享中win7能找到win10,但win10找不到win7
  6. python编写学生选课系统程序_python面向对象编程小程序- 选课系统
  7. oracle 计算复杂 数据跑不出来 如何分批次_如何配置PG的数据库缓冲
  8. cuSPARSE库:(八)cusparseGetStream()
  9. Linux内核深入理解系统调用(1):初始化-入口-处理-退出
  10. Linux开机启动过程(12):start_kernel()->还是setup_arch