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

c# - .Net 中是否有“Set”数据结构?

理想情况下,我正在寻找一个模板化的逻辑 Set 类。它将具有所有标准集合操作,例如 Union、Intersection 等,并折叠重复项。

我最终基于 C# Dictionary<> 创建了我自己的集合类 - 仅使用键。

0 投票
14 回答
43599 浏览

python - 在 Python 中从序列中删除项目的优雅方法?

当我在 Python 中编写代码时,我经常需要根据某些标准从列表或其他序列类型中删除项目。我还没有找到优雅高效的解决方案,因为从您当前正在迭代的列表中删除项目是不好的。例如,您不能这样做:

我通常最终会做这样的事情:

这是低效的,相当丑陋的并且可能有错误(它如何处理多个“约翰史密斯”条目?)。有没有人有更优雅的解决方案,或者至少是更有效的解决方案?

一个与字典一起工作的怎么样?

0 投票
15 回答
666747 浏览

python - 如何从集合中检索元素而不删除它?

假设如下:

我如何在不做的情况下获得价值(任何价值ss.pop()?我想将项目留在集合中,直到我确定我可以将其删除 - 我只能在异步调用另一个主机之后才能确定。

又快又脏:

但是你知道更好的方法吗?理想情况下在恒定时间内。

0 投票
9 回答
7780 浏览

c# - 在 .NET C# 中设置操作

我现在正在研究与 roughset 相关的东西。该项目使用了大量的集合操作和操作。我一直在使用字符串操作作为设置操作的权宜之计。它一直运行良好,直到我们需要通过算法处理一些不合情理的数据(500,000 条记录,每条记录大约 40 多列)。

我知道 .net 2.0 中没有设置数据结构(2.0 是我开始项目时最新的) 我想知道是否有任何库在 .net c# 中提供快速设置操作,或者 3.5 是否添加了本机设置数据结构体。

谢谢 。

0 投票
34 回答
231040 浏览

java - 从集合中选择一个随机元素

如何从集合中选择随机元素?我对在 Java 中从 HashSet 或 LinkedHashSet 中选择随机元素特别感兴趣。也欢迎其他语言的解决方案。

0 投票
6 回答
6206 浏览

python - 在 Python 中存储集合数据的最佳方式是什么?

我有以下形式的数据列表:

[(id\__1_, description, id\_type), (id\__2_, description, id\_type), ... , (id\__n_, description, id\_type))

数据是从属于同一组的文件中加载的。在每个组中,可能有多个相同的 id,每个来自不同的文件。我不关心重复项,所以我认为存储所有这些内容的好方法是将其放入 Set 类型。但是有一个问题。

有时对于相同的 id,描述可能会略有不同,如下所示:

IPI00110753

  • 微管蛋白 alpha-1A 链
  • 微管蛋白 alpha-1 链
  • α-微管蛋白 1
  • α-微管蛋白同种型 M-α-1

(请注意,此示例取自uniprot 蛋白质数据库。)

我不在乎描述是否不同。我不能把它们扔掉,因为我使用的蛋白质数据库可能不包含某个标识符的列表。如果发生这种情况,我希望能够向生物学家显示人类可读的描述,以便他们大致了解他们正在研究的蛋白质。

我目前正在通过使用字典类型来解决这个问题。但是我不太喜欢这个解决方案,因为它使用了大量内存(我有很多这些 ID)。这只是它们的中间列表。在将 ID 放入数据库之前,还需要进行一些额外的处理,所以我想保持我的数据结构更小。

我真的有两个问题。首先,我会为此使用 Set 类型(而不是字典类型)获得更小的内存占用,还是应该使用排序列表,每次插入列表时检查 ID 是否存在,或者是否存在我没有想到的第三个解决方案?其次,如果 Set 类型是更好的答案,我如何键入它以仅查看元组的第一个元素而不是整个元素?

感谢您阅读我的问题,
蒂姆

更新

根据我收到的一些评论,让我稍微澄清一下。我对数据结构所做的大部分工作都是插入其中。我只读了两次,一次是用附加信息注释它,一次是要插入到数据库中。然而,在我插入数据库之前,可能会有额外的注释。不幸的是,我不知道此时是否会发生这种情况。

现在我正在研究将这些数据存储在不基于哈希表(即字典)的结构中。我希望新结构在插入时相当快,但读取它可以是线性的,因为我实际上只做了两次。我试图远离哈希表以节省空间。是否有更好的结构或者哈希表是否尽可能好?

*该信息是我通过查询 uniprot 获得的 Swiss-Prot 蛋白质标识符列表。

0 投票
4 回答
47803 浏览

java - java.util.Collection 的经典集合操作

java.util.Collection 类上的经典集合操作是否有任何内置功能?我的具体实现是针对 ArrayList,但这听起来应该适用于 Collection 的所有子类。我正在寻找类似的东西:

经过一番搜索,我只能找到本土解决方案。另外,我意识到我可能会将“集合”的概念与“集合”的概念混淆,分别不允许和允许重复。也许这真的只是 Set 接口的功能?

如果没有人知道任何内置功能,也许我们可以将其用作标准实践 Java 集合操作代码的存储库?我想这个轮子已经被重新发明了无数次。

0 投票
8 回答
3799 浏览

java - Common Lisp 是否有类似 java 的 Set Interface/implementing classes 的东西?

我需要这样的东西一个不包含任何元素重复的元素集合。Common Lisp,特别是 SBCL,有这样的东西吗?

0 投票
10 回答
2248 浏览

sql - SQL 游标...您会捍卫任何用例吗?

我先走。

我是 100% 在集合操作阵营。但是,当整个所需输入域上的设置逻辑导致如此大的检索以致查询显着减慢、爬行或基本上需要无限时间时会发生什么?

在这种情况下,我将使用可能最多数十行的小光标(或 while 循环)(而不是我的目标数百万行)。因此,我仍在(分区子)集中工作,但我的检索运行得更快。

当然,更快的解决方案是从外部并行调用分区输入域,但这会引入外部系统的交互,并且当可以通过串行循环实现“足够好”的速度时,可能不值得它(特别是在开发过程中)。

0 投票
7 回答
47285 浏览

java - 更新 Set 中的对象

假设我的应用程序中有这种类型:

和一个结构。现在,我有一个类型的对象并想要执行以下操作:Set<A>A

  • 如果 myA在集合内,请更新其字段b以匹配我的对象。
  • 否则,将其添加到集合中。

所以检查它是否在那里很容易(contains),添加到集合中也很容易。我的问题是:如何获得更新对象的句柄?接口Set没有get方法,我能想到的最好的方法是删除集合中的对象并添加我的。另一种更糟糕的替代方法是使用迭代器遍历集合以尝试定位对象。

我很乐意接受更好的建议……这包括有效使用其他数据结构。

尤瓦尔=8-)

编辑:谢谢大家的回答......不幸的是,我不能在这里“接受”最好的答案,那些建议使用 a 的人Map,因为仅仅为了这个目的而彻底改变集合的类型会有点极端(这个集合是已经通过 Hibernate 映射...)