问题标签 [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 投票
19 回答
205134 浏览

java - 为什么 java.util.Set 没有 get(int index)?

我敢肯定有一个很好的理由,但是有人可以解释为什么java.util.Set缺少界面get(int Index)或任何类似的get()方法吗?

似乎集合非常适合放入东西,但我找不到从中检索单个项目的优雅方法。

如果我知道我想要第一个项目,我可以使用set.iterator().next(),但否则我似乎必须强制转换为 Array 以检索特定索引处的项目?

从集合中检索数据的适当方法是什么?(除了使用迭代器)

我确信它被排除在 API 之外的事实意味着有充分的理由不这样做 - 有人可以启发我吗?

编辑: 这里有一些非常棒的答案,还有一些说“更多上下文”。具体场景是 dbUnit 测试,我可以合理地断言从查询返回的集合只有 1 个项目,并且我试图访问该项目。

但是,如果没有这个场景,这个问题会更有效,因为它仍然更加集中:

set 和 list 有什么区别

感谢所有人在下面提供出色的答案。

0 投票
5 回答
6798 浏览

ruby - Ruby:想要一个保持顺序的类似集合的对象

...或者一个防止重复条目的数组。

Ruby中是否有某种对象:

  • 响应 []、[]= 和 <<
  • 静默删除重复条目
  • 是可枚举的(或至少支持 find_all)
  • 保留插入条目的顺序
?

据我所知,数组支持点 1、3 和 4;而 Set 支持 1、2 和 3(但不支持 4)。并且 SortedSet 不会这样做,因为我的条目没有实现 <=>。

0 投票
4 回答
2868 浏览

python - 使用 Python 集合类型实现 ACL

目前我有这样的表:Pages, Groups, GroupPage, Users, UserGroup. 使用腌制集,我只需 3 个表即可实现相同的功能:Pages, Groups, Users.

set似乎是实现 ACL 的自然选择,因为组和权限相关的操作可以用集合非常自然地表达。如果我将允许/拒绝列表存储为腌制集,它可以消除一些用于多对多关系的中间表,并允许在没有很多数据库操作的情况下进行权限编辑。

如果人类可读性很重要,我总是可以使用 json 而不是 cPickle 进行序列化,并set在 Python 中操作权限列表时使用。使用 SQL 直接编辑权限的可能性很小。那么这是一个好的设计理念吗?

我们使用 SQLAlchemy 作为 ORM,所以它很可能用PickleTypecolumn 来实现。我不打算存储整个腌制的“资源”记录集,只存储set由“资源”主键​​值组成的对象。

0 投票
8 回答
13315 浏览

python - 对 Python 集类进行子类化、添加新实例变量的正确(或最佳)方法是什么?

我正在实现一个几乎与集合相同的对象,但需要一个额外的实例变量,因此我将内置集合对象子类化。确保在复制我的一个对象时复制此变量的值的最佳方法是什么?

使用旧的 sets 模块,以下代码完美运行:

但这不适用于内置的 set 模块。

我能看到的唯一解决方案是覆盖每个返回复制的集合对象的单个方法......在这种情况下,我可能不会打扰对集合对象进行子类化。当然有一个标准的方法来做到这一点?

(为了澄清,以下代码不起作用断言失败):

)

0 投票
5 回答
2335 浏览

c++ - 确定对象是否在 std::set 中

我试图确定一个对象是否已经包含在std::set. 根据 msdn (和其他来源),如果 set::find 函数end()没有找到您要求的元素,它应该返回。

但是,当我实现如下代码时,会改为set::find返回 junk ( )。0xbaadf00d

我正确使用它吗?我正在使用 Visual C++ 2005。

0 投票
1 回答
144 浏览

vb.net - Linq,VB 的排他集语法

我想根据标准对集合进行减法。伪查询如下所示:

我可以做到这里:

从那里我不知道该怎么办。

0 投票
1 回答
4371 浏览

c# - 在 VB、C# 中使用 Linq 处理匿名类型

假设我创建了两组元组,如下所示:

现在我想对这两个列表执行集合操作,如下所示:

显然,如果 Linq 不知道集合具有统一的定义,它就不能对集合执行比较器,所以它会给我这个构建错误:

Option Strict On 禁止从“System.Collections.Generic.IEnumerable(Of <anonymous type>)”到“System.Collections.Generic.IEnumerable(Of <anonymous type>)”的隐式转换。

我如何处理这些集合的声明以使它们网格化?(谷歌运气不佳)

[编辑] 仍然得到相同的编译错误:

错误在这里:

暗淡 loTupleSetDifference = loTupleDatabaseTools.Except( loTupleToolObjects )

错误 5 Option Strict On 不允许从“System.Collections.Generic.IEnumerable(Of <anonymous type>)”到“System.Collections.Generic.IEnumerable(Of <anonymous type>)”的隐式转换。

0 投票
5 回答
5715 浏览

algorithm - 如何从 Delphi 集中获得最高值?

有没有办法提取集合中的最高(或最低)值?例如,如果我有以下“字节集”:

有什么功能我可以在上面运行并返回 199 作为结果?

编辑:有一个明显的暴力解决方案涉及 for..in 循环。如果可能的话,我想找到比这更好的方法。

0 投票
7 回答
8752 浏览

java - Set.removeAll() 下面使用哪个方法:equals 还是 compareTo?

考虑代码:

我正在尝试这样做

我看到调用了equals方法;这总是正确的,还是可能会改为调用 compareTo?

0 投票
3 回答
165 浏览

sql - 确定与 T-SQL 中的同一集合连接的项目

我正在写一份报告,想知道是否有任何方法可以找到加入相同集合的项目?

例如,在以下查询中,我想查找与同一组产品连接的所有区域:

我能想到的当前最佳解决方案是编写一个自定义聚合,将 ProductId 唯一标识符散列在一起(例如基于某个字节右移然后将它们异或在一起),但我想在去之前我会问是否有更简单的方法通过这。