问题标签 [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.
java - HashSet 问题——equals 和 hashCode 与 contains 的工作方式与我预期的不同
我有以下代码:
输出是:1 1 现在使用 HashSet:1 1 0
但是,我本来希望最后一行也是true
(1)。有什么明显的东西我失踪了。
(是的,我知道我的equals
方法和hashcode
方法没有考虑到一些问题......它们故意简单,但如果有问题导致这个问题,请告诉我。)
java - Java:泛型和集合类型检测的问题
我有一个名为 DataSet 的类,它有各种构造函数,每个构造函数都指定不同类型的变量。它可能看起来有点像这样:
注意:由于部分不完整(我现在正在构建),我尚未测试该代码。
在我当前正在构建的函数中getDataObjects()
,我需要返回该集合表示的所有 DataObject 对象。对于初始化类的 HashSet 的构造函数,Data
其类型不是DataObject
(例如上述ObjectRelationship
),显然不会有任何 DataObjects 存储在其中。在这种情况下,我需要能够检测 HashSet 'Data' 的启动类型(例如,判断它是否是 'ObjectRelationship',我的意思是)。我该怎么做呢?
tl;dr:我如何判断在我的代码中启动集合(在本例中为 HashSet)的类型(例如使用“if”或“switch”语句或其他内容)?
c# - 您如何确定两个 HashSet 是否相等(按值,而不是按引用)?
我试图确定HashSet
.NET 3.5 (C#) 中的两个对象是否是相等的集合,即包含相同的值。这似乎是一个显然想要做的事情,但所提供的功能似乎都没有为您提供这些信息。
我能想到的方法是检查两组的计数是否相等,并且一组是另一组的子集(不正确)。我认为可能发生的唯一方法是它们是相等的集合。示例代码:
这会一直有效吗?有没有更好的办法?为什么没有HashSet
功能 public bool IsEqualSetWith()
?
java - 在迭代java期间修改集合
我正在寻找一种递归方法迭代。
我有一个要迭代的对象列表,然后检查它们的子对象。
递归:
我想把它改成这样
很抱歉伪代码很差,但基本上我想迭代子对象,同时将新对象附加到列表末尾以进行检查。
我可以使用列表来执行此操作,并执行类似的操作
但我真的不想添加重复的子对象。当然,我可以在添加它之前检查 list.contains(each subObject) 是否。
但我很想使用 Set 来完成清洁工作。
所以基本上无论如何都要在迭代它时附加到一个集合,或者是否有一种更简单的方法可以使列表像一个集合而不是手动检查.contains()?
任何意见表示赞赏。
谢谢
c# - HashSet 性能 Add vs Contains 现有元素
Add
出于某种原因,对 a的操作似乎HashSet
比Contains
在元素已经存在于HashSet
.
这是证据:
为什么Contains
比Add
现有元素更快?
注意:我正在使用Stopwatch
另一个 SO question 的扩展。
更新:内部测试表明,大的性能差异仅发生在 x64 版本的 .NET 框架上。使用 32 位版本的框架 Contains 似乎以相同的速度运行(事实上,在某些测试运行中,带有 contains 的版本似乎运行速度慢了一个百分点)在 X64 版本的框架上,带有 contains 的版本似乎运行速度快约 15%。
c# - 为什么是哈希集.IsReadOnly 是显式的吗?
这
不编译。我要做
为什么 IsReadOnly 没有正常实施?
(我不是问如何,而是为什么)
java - 迭代后从失败的 HashSet 中删除
我正在用 java 编写一个凝聚聚类算法,并且在删除操作时遇到了问题。当集群数量达到初始数量的一半时,它似乎总是失败。
在下面的示例代码中,clusters
是一个Collection<Collection<Integer>>
.
经过几次循环后,clusters.remove(minclust2)
最终返回false,但我不明白为什么。
我首先创建了 10 个集群来测试这段代码,每个集群都有一个从 1 到 10 的整数。距离是 0 到 1 之间的随机数。这是添加一些 println 语句后的输出。在集群数量之后,我打印出实际的集群、合并操作以及 clusters.remove(minclust2) 的结果。
[10, 9, 5, 6, 4, 5, 6, 4, ...] 集合从那里无限增长。
编辑:澄清一下,我HashSet<Integer>
对集群中的每个集群使用 a (a HashSet<HashSet<Integer>>)
.
c# - 有没有办法在c#中获得两组对象之间的差异
我想得到 c# 中两组整数之间的区别。给定 s1 和 s2 我想返回那些在 s1 中而不是在 s2 中的整数。我可以做一些事情,例如:
但我想知道是否有人可以指出任何更清洁的东西。我想做一些事情,比如
不确定是否存在任何人都可以指出的现有方法或 LINQ 构造?谢谢你。
c# - 使用哈希集在 C# Properties.Settings 中
我正在为我正在开发的游戏创建一些 C# 工具,并且我正在添加“最近的文件->”下拉菜单。
问题是,我无法在 VS2008 中获得 C# 的“设置”页面来允许我添加类型化的 HashSet。只是没有选择这样做。
我得到了所有hackalicious并手动将“Settings.Designer.cs”文件编辑为:
这似乎工作得很好。但是,我知道在某些时候它会使用代码生成器来消除这些更改。
这样做的正确方法是什么?C# 是否有一些我应该用于此功能的内置类型,而不仅仅是一个简单的 HashSet?