问题标签 [set]
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 - 在 ArrayList 上使用 HashSet 来传达意图?
想象一下,我需要创建一个元素集合,其中顺序可能重要,也可能不重要。实际上,我计划做的就是使用迭代器。我注意到我的大多数同事都使用 ArrayList 与 LinkedHashSet/HashSet。我的问题是,如果我知道这些元素应该是唯一的,我应该使用 Set 还是 List?实际上它并没有真正产生影响,但是 Set 不是更有效地传达了元素是独一无二的吗?
我发现这对于大型企业应用程序来说是一个有趣的问题,原因如下: 1) 如果您不能保证整体代码的质量,那么使用 Set 可能会很危险。为什么?因为 equals() 和 hashcode 可能被错误地覆盖,因此使用 Set 可能会导致一些非常讨厌的问题。2) 使用列表更能适应未来的变化。如果出于某种原因可能出现重复,则无需担心。
基本上它归结为:如果我知道我应该期待独特的元素,我应该在所有情况下都支持 Set 而不是 List 吗?
编辑:我想我也在问:是否应该使用 Set 来确保不添加重复项,或者它是否也可以仅用于说明不存在重复项以便于理解?
unix - 用于查找字符串集交点或异常值的 Unix 命令?
是否有与 UNIX 命令相当的
查找字符串集的交点或“异常值”。
一个示例应用程序:我有一个 html 模板列表,其中一些有 {% load i18n %} 字符串,其他没有。我想知道哪些文件没有。
编辑: grep -L 解决了上述问题。
这个怎么样:
文件1:
文件2:
% 相交文件 1 文件 2
%left-unique file1 file2
python - 从列表更新列表的算法
我有一个提供对象列表及其属性的数据源(一个 CSV 文件,但这没关系)。每次我的程序运行时,它都需要提取对象列表的新副本,将其与存储在数据库中的对象列表(及其属性)进行比较,并根据需要更新数据库。
处理新对象很容易 - 数据源为每个对象提供一个连续的 ID 号,对照数据库检查新信息中的顶部 ID 号,就完成了。我正在寻找其他情况的建议——当一个对象的某些属性发生变化时,或者当一个对象被删除时。
一个天真的解决方案是从数据库中提取所有对象并获取两个集合(旧的和新的)交集的补集,然后检查这些结果,但如果集合得到,这似乎不是很有效大的。有任何想法吗?
java - 有没有办法在 servletconfig 或 servletContext 对象中设置 init 参数?
如果我想修改任何 ServletContext 或 ServletConfig 中的初始化参数值。任何人都希望在 servlet 被容器销毁后对其进行更新。有什么出路吗?
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
。好结局。
vb.net - 无法设置属性的属性
正如我所说,我在设置属性的属性时遇到了麻烦。假设我有一个代表交易的类。在我的班级中,我有一个代表另一个班级的属性,例如:
所以我基本上有一个属性,它有一个获取合适的人的过滤器。问题是,当我想通过属性设置 Person 的信息时,VB 似乎忽略了我什至这样做,例如:
但是当我对此进行观察时,设置属性后,我的值不会改变。我对这种行为感到困惑。有什么我做错了吗?谢谢!
java - 集合和列表有什么区别?
Set<E>
和List<E>
接口之间的根本区别是什么?
python - 实现动态视图的简单方法?
View 是Python 3的有用构造。对于那些从未注意到的人(比如我):对于d
您可以编写的字典k = d.keys()
,即使您更新d
变量k
仍会为您提供更新后的键。你可以写k1 & k2
,它会永远给你d1.keys() & d2.keys()
我想为我的个人待办事项管理器实现这个,但我想让复杂的视图动态化,或者懒惰地评估。也就是说,我有一些名为 的视图so
,post
并且priority
我希望能够编写:
这样以后,当__repr__(now)
调用 时,仅在该点执行评估。
我的第一个想法是重载逻辑运算符,因此我更改View.__and__
为创建一个新视图,该视图记住自己是两个子视图的组合,&
并在计算时应用于它们。但是似乎有相当多的逻辑运算符,所以我不确定我是否做对了。
是否有一个标准库类可以帮助我解决这个问题?如何简化流程?
java - Set界面中的**等于**
正如我们所知,如果两个Set
实例包含相同的元素,则它们是相等的,但是是否可以在两个不同的集合中具有相同的元素(Set
接口不能包含重复的元素)?
java - 这个声明是什么意思?
我是 Java 初学者,不明白if(!s.add(a))
这段代码摘录的含义: