问题标签 [hashset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - WCF 中的哈希集
我在我的 WCF 界面中使用 HashSet
当我创建一个服务引用时,HashSet 变成了一个 int[]。
我添加了一个 ServiceKnownType :
并尝试了一些配置,但无法完全改变。
如果我更改它硬编码一切正常,但每次更新我的参考时更改它真的很烦人..
我可能做错了什么,有什么指示或想法吗?
c# - 如何控制对象如何被哈希集散列
我正在使用 aHashSet<T>
来存储对象的集合。这些对象已经有一个唯一的 ID System.Guid
,所以我宁愿HashSet<>
只使用现有的 ID,而不是试图弄清楚自己如何散列对象。如何覆盖内置散列并强制我的程序使用内置 ID 值作为散列值?
还说我知道我Guid
的对象的,有没有办法仅基于此HashSet<>
从 a 获取对象?或者我应该改用字典。HashSet<T>
Guid
c# - HashSet IntersectWith 计数单词但只有唯一
我在表单和文本文件中获得了richtextBox 控件。我将文本文件获取到数组并获取richtextbox1.text
到其他数组,而不是比较它并计算匹配的单词。
但例如文本文件中有两个“name”字,richtextbox 中有三个“and”字。因此,如果richtextbox的文本文件中有两个相同的单词,它不能在2之后为3或更高,它一定是错误的单词,所以它不能被计算在内。但是 HashSet 只计算唯一值而不是在文本文件中查找重复项。我想将文本文件中的每个单词与 RichTextBox 中的单词进行比较。
我的代码在这里:
c# - 将 HashSet 绑定到 ListView 项(C#、WPF)
我正在尝试将 HashSet 绑定到 ListView 项。我在这里记录了我的代码:
任何人都可以帮助我提示如何做到这一点吗?非常感谢!
干杯
c# - 如何将比较器用于 HashSet
由于我在这里提出的另一个问题,我想为我的对象使用 HashSet
我将创建包含字符串和对其所有者的引用的对象。
我知道我需要一个比较器,但以前从未使用过它。我应该创建一个单独的类吗?像:
}
我更喜欢有一个函数(或嵌套类[可能是单例?] 如果需要)作为类 Synonym 的一部分,而不是另一个(独立)类。这可能吗?
关于用法:因为我之前从未使用过这种东西,所以我想我必须在 Synonym 类中编写一个 Find(string NameSynonym) 函数,但我应该怎么做呢?
在上面的代码中,我不知道如何实现“查找”方法。我该怎么做?
任何帮助将不胜感激(PS如果我关于如何实施的想法完全错误,请告诉我并告诉我如何实施)
c# - 为什么在 C# 中有 HashSet 而没有 Set?
老问题
我的理解是C#在某种意义上HashSet
和set
类型。我明白是什么HashSet
。但为什么set
是一个单独的词?为什么不是每一套都是HashSet<Object>
?
新问题
为什么C#没有泛型Set
类型,类似于Dictionary
类型?从我的角度来看,我想要一个具有标准查找/添加/删除性能的集合。我不太关心它是用哈希还是其他东西实现的。那么为什么不创建一个在这个版本的 C# 中实际实现为 aHashSet
但在未来版本中可能有所不同的集合类呢?
或者为什么不至少 interface ISet
?
回答
感谢以下回答的所有人:ICollection
实现了很多您期望的ISet
. 不过,从我的角度来看,虽然集合不一定是可枚举的——例如:1 到 2 之间的实数集(甚至可以动态生成集合)ICollection
。IEnumerable
我同意这是一个小小的抱怨,因为“普通程序员”很少需要不可数的集合。
好的,我想我明白了。HashSet
绝对是要被调用Set
的,但这个词Set
在某种意义上是保留的。更具体地说,.NET 架构的创建者希望为不同的语言提供一致的类集(原文如此!)。这意味着标准类的每个名称都不能与 .NET 语言中的任何关键字重合。然而,在 VB.NET 中使用了这个词Set
,它实际上是不区分大小写的(是吗?)所以不幸的是那里没有回旋余地。
谜团已揭开 :)
结语
Alex Y. 的新答案链接到MSDN 页面,该页面描述了即将推出的 .NET 4.0 接口ISet
,该接口的行为与我认为的差不多,并且由 .NET 实现HashedSet
。好结局。
c# - 集合查找;字典的替代品
TimeSheetActivity 类具有分配的集合。分配是一个值对象,也被域中的其他对象使用,看起来像这样:
不允许对同一个 Allocation.EventDate 进行重复分配。因此,当客户端尝试对活动进行分配时,会检查集合中是否已经存在同一个 Allocation.EventDate 的 Allocation。如果不是,则将新的分配添加到集合中,但如果是,则将现有的分配替换为新的分配。
我目前正在使用 Dictionary 来维护集合,并以 Allocation.EventDate 作为键。它适用于域,但我想知道密钥已经是值的一部分这一事实本身是否不是“难闻的气味”。
除了字典值之外,我也没有理由坚持任何东西。因为我使用的是 NHibernate,所以我可能需要编写一些自定义类型来做到这一点,我想知道这是否也是我应该使用不同类型的集合的线索。(这也是分配类中的虚拟属性的原因)。
我正在考虑的主要替代方案是带有专用 EqualityComparer 的 HashSet。
你怎么看?
干杯,贝里尔
java - 迭代时从 HashSet 中删除元素
因此,如果我在迭代时尝试从 Java HashSet中删除元素,我会得到一个ConcurrentModificationException。如以下示例所示,从HashSet中删除元素子集的最佳方法是什么?
这是一个解决方案,但我认为它不是很优雅:
谢谢!
java - 集合 removeAll 忽略大小写?
好的,这是我的问题。我必须HashSet
,我使用该removeAll
方法从另一组中删除存在于一组中的值。
在调用该方法之前,我显然将值添加到Set
s. 我在添加之前调用.toUpperCase()
每个String
,因为两个列表中的值是不同的情况。此案没有押韵或理由。
一旦我打电话removeAll
,我需要把原来的情况下留在Set
. 有没有一种有效的方法可以在不遍历原始列表和使用的情况下执行此操作CompareToIgnoreCase
?
例子:
清单 1:
清单 2:
在此之后,使用on sHashSet
为每个 List创建一个单独的。然后调用。toUpperCase()
String
removeAll
我需要让列表再次看起来像这样:
任何想法将不胜感激。我知道它很差,原始列表应该有一个标准,但这不是我能决定的。
c# - 我什么时候应该使用 HashSet类型?
我正在探索这种HashSet<T>
类型,但我不明白它在集合中的位置。
可以用它来代替aList<T>
吗?我想 a 的性能HashSet<T>
会更好,但我看不到个人访问它的元素。
是否仅用于枚举?