问题标签 [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.

0 投票
10 回答
7790 浏览

java - 在 ArrayList 上使用 HashSet 来传达意图?

想象一下,我需要创建一个元素集合,其中顺序可能重要,也可能不重要。实际上,我计划做的就是使用迭代器。我注意到我的大多数同事都使用 ArrayList 与 LinkedHashSet/HashSet。我的问题是,如果我知道这些元素应该是唯一的,我应该使用 Set 还是 List?实际上它并没有真正产生影响,但是 Set 不是更有效地传达了元素是独一无二的吗?

我发现这对于大型企业应用程序来说是一个有趣的问题,原因如下: 1) 如果您不能保证整体代码的质量,那么使用 Set 可能会很危险。为什么?因为 equals() 和 hashcode 可能被错误地覆盖,因此使用 Set 可能会导致一些非常讨厌的问题。2) 使用列表更能适应未来的变化。如果出于某种原因可能出现重复,则无需担心。

基本上它归结为:如果我知道我应该期待独特的元素,我应该在所有情况下都支持 Set 而不是 List 吗?

编辑:我想我也在问:是否应该使用 Set 来确保不添加重复项,或者它是否也可以仅用于说明不存在重复项以便于理解?

0 投票
6 回答
15915 浏览

unix - 用于查找字符串集交点或异常值的 Unix 命令?

是否有与 UNIX 命令相当的

查找字符串集的交点或“异常值”。

一个示例应用程序:我有一个 html 模板列表,其中一些有 {% load i18n %} 字符串,其他没有。我想知道哪些文件没有。

编辑: grep -L 解决了上述问题。

这个怎么样:

文件1:

文件2:

% 相交文件 1 文件 2

%left-unique file1 file2

0 投票
4 回答
402 浏览

python - 从列表更新列表的算法

我有一个提供对象列表及其属性的数据源(一个 CSV 文件,但这没关系)。每次我的程序运行时,它都需要提取对象列表的新副本,将其与存储在数据库中的对象列表(及其属性)进行比较,并根据需要更新数据库。

处理新对象很容易 - 数据源为每个对象提供一个连续的 ID 号,对照数据库检查新信息中的顶部 ID 号,就完成了。我正在寻找其他情况的建议——当一个对象的某些属性发生变化时,或者当一个对象被删除时。

一个天真的解决方案是从数据库中提取所有对象并获取两个集合(旧的和新的)交集的补集,然后检查这些结果,但如果集合得到,这似乎不是很有效大的。有任何想法吗?

0 投票
1 回答
4146 浏览

java - 有没有办法在 servletconfig 或 servletContext 对象中设置 init 参数?

如果我想修改任何 ServletContext 或 ServletConfig 中的初始化参数值。任何人都希望在 servlet 被容器销毁后对其进行更新。有什么出路吗?

0 投票
7 回答
15953 浏览

c# - 为什么在 C# 中有 HashSet 而没有 Set?

老问题

我的理解是C#在某种意义上HashSetset类型。我明白是什么HashSet。但为什么set是一个单独的词?为什么不是每一套都是HashSet<Object>

新问题

为什么C#没有泛型Set类型,类似于Dictionary类型?从我的角度来看,我想要一个具有标准查找/添加/删除性能的集合。我不太关心它是用哈希还是其他东西实现的。那么为什么不创建一个在这个版本的 C# 中实际实现为 aHashSet但在未来版本中可能有所不同的集合类呢?

或者为什么不至少 interface ISet

回答

感谢以下回答的所有人:ICollection实现了很多您期望的ISet. 不过,从我的角度来看,虽然集合不一定是可枚举的——例如:1 到 2 之间的实数集(甚至可以动态生成集合)ICollectionIEnumerable我同意这是一个小小的抱怨,因为“普通程序员”很少需要不可数的集合。

好的,我想我明白了。HashSet绝对是要被调用Set的,但这个词Set在某种意义上是保留的。更具体地说,.NET 架构的创建者希望为不同的语言提供一致的类集(原文如此!)。这意味着标准类的每个名称都不能与 .NET 语言中的任何关键字重合。然而,在 VB.NET 中使用了这个词Set,它实际上是不区分大小写的(是吗?)所以不幸的是那里没有回旋余地。

谜团已揭开 :)

结语

Alex Y. 的新答案链接到MSDN 页面,该页面描述了即将推出的 .NET 4.0 接口ISet,该接口的行为与我认为的差不多,并且由 .NET 实现HashedSet。好结局。

0 投票
3 回答
1410 浏览

vb.net - 无法设置属性的属性

正如我所说,我在设置属性的属性时遇到了麻烦。假设我有一个代表交易的类。在我的班级中,我有一个代表另一个班级的属性,例如:

所以我基本上有一个属性,它有一个获取合适的人的过滤器。问题是,当我想通过属性设置 Person 的信息时,VB 似乎忽略了我什至这样做,例如:

但是当我对此进行观察时,设置属性后,我的值不会改变。我对这种行为感到困惑。有什么我做错了吗?谢谢!

0 投票
26 回答
638384 浏览

java - 集合和列表有什么区别?

Set<E>List<E>接口之间的根本区别是什么?

0 投票
2 回答
82 浏览

python - 实现动态视图的简单方法?

View 是Python 3的有用构造。对于那些从未注意到的人(比如我):对于d您可以编写的字典k = d.keys(),即使您更新d变量k仍会为您提供更新后的键。你可以写k1 & k2,它会永远给你d1.keys() & d2.keys()

我想为我的个人待办事项管理器实现这个,但我想让复杂的视图动态化,或者懒惰地评估。也就是说,我有一些名为 的视图sopost并且priority我希望能够编写:

这样以后,当__repr__(now)调用 时,仅在点执行评估。

我的第一个想法是重载逻辑运算符,因此我更改View.__and__为创建一个新视图,该视图记住自己是两个子视图的组合,&并在计算时应用于它们。但是似乎有相当多的逻辑运算符,所以我不确定我是否做对了。

是否有一个标准库类可以帮助我解决这个问题?如何简化流程?

0 投票
3 回答
1296 浏览

java - Set界面中的**等于**

正如我们所知,如果两个Set实例包含相同的元素,则它们是相等的,但是是否可以在两个不同的集合中具有相同的元素(Set接口不能包含重复的元素)?

0 投票
11 回答
1356 浏览

java - 这个声明是什么意思?

我是 Java 初学者,不明白if(!s.add(a))这段代码摘录的含义: