问题标签 [collections]

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 投票
8 回答
33130 浏览

.net - 队列的限制大小在.NET 中?

我有一个 Queue<T> 对象,我已将其初始化为容量 2,但显然这只是容量,并且在我添加项目时它会不断扩展。是否已经有一个对象在达到限制时自动使项目出列,或者是创建我自己的继承类的最佳解决方案?

0 投票
8 回答
199523 浏览

c# - 键值对数据结构的最佳实现?

所以我最近一直在研究 C#,所有的通用集合都让我有点困惑。假设我想表示一种数据结构,其中树的头部是一个键值对,然后在其下方有一个可选的键值对列表(但不超过这些级别)。这会合适吗?

这只是传递数据的简单分流。

0 投票
3 回答
8130 浏览

c# - 对复合集合进行排序

因此 WPF 不支持 CompositeCollections 视图的标准排序或过滤行为,那么解决此问题的最佳实践是什么。

有两个或多个不同类型的对象集合。您希望将它们组合成一个可排序和可过滤的集合(必须手动实现排序或过滤)。

我考虑过的一种方法是创建一个只有几个核心属性的新对象集合,包括我希望对集合进行排序的那些,以及每种类型的对象实例。

然后循环遍历我的两个对象集合以构建新的复合集合。显然,这是一种蛮力方法,但它会起作用。我将在我的新复合对象集合上获得所有默认视图排序和过滤行为,并且我可以在其上放置一个数据模板以根据实际存储在该复合项目中的类型正确显示我的列表项。

以更优雅的方式执行此操作有什么建议?

0 投票
7 回答
43019 浏览

c# - 迭代强类型泛型 List 的最佳方法是什么?

在 C#.NET 和 VB.NET 中迭代强类型泛型 List 的最佳方法是什么?

0 投票
21 回答
216572 浏览

java - 转换列表列出

我有一个整数列表,List<Integer>我想将所有整数对象转换为字符串,从而完成一个新的List<String>.

自然地,我可以创建一个新的List<String>并循环调用String.valueOf()每个整数的列表,但我想知道是否有更好的(阅读:更自动的)方法来做到这一点?

0 投票
8 回答
69120 浏览

java - 从groovy中的列表创建地图的快捷方式?

我想要一些排序方法:

鉴于 GDK 的方式,我希望能够执行以下操作:

但我没有在文档中看到任何内容......我错过了什么吗?还是我太懒了?

0 投票
2 回答
1193 浏览

vb.net - 在没有 Linq 的情况下分页通用集合

我有一个 System.Generic.Collections.List(Of MyCustomClass) 类型的对象。

给定整数变量 pagesize 和 pagenumber,我怎样才能只收集任何单页MyCustomClass对象?

这就是我所拥有的。我该如何改进它?

0 投票
18 回答
4620 浏览

c# - 列表还是 BusinessObjectCollection?

在 C# 泛型之前,每个人都会通过创建一个实现 IEnumerable 的集合库来为他们的业务对象编写集合

IE:

然后会从中派生出他们的业务对象集合。

现在有了通用列表类,有没有人用它来代替?我发现我使用了两种技术的折衷方案:

我这样做是因为我喜欢使用强类型名称,而不仅仅是传递列表。

方法是什么?

0 投票
8 回答
109942 浏览

java - 如何最好地比较 Java 中的两个集合并对其采取行动?

我有两个相同对象的集合,Collection<Foo> oldSet并且Collection<Foo> newSet. 所需逻辑如下:

  • 如果foo在 (*)oldSet但不是newSet,则调用doRemove(foo)
  • else if foois not in oldSetbut in newSet, 调用doAdd(foo)
  • 否则,如果foo在两个集合中但已修改,则调用doUpdate(oldFoo, newFoo)
  • 否则!foo.activated && foo.startDate >= now,调用doStart(foo)
  • 否则foo.activated && foo.endDate <= now,调用doEnd(foo)

(*) “in”表示唯一标识符匹配,不一定是内容。

当前(旧版)代码进行许多比较以找出removeSetaddSet、和updateSet,然后循环对每个项目进行操作。startSetendSet

代码非常混乱(部分原因是我已经遗漏了一些意大利面条逻辑),我正在尝试重构它。更多背景信息:

  • 据我所知,oldSetandnewSet实际上是由ArrayList
  • 每组包含少于 100 个项目,最有可能最多 20 个
  • 此代码被频繁调用(以百万/天为单位),尽管集合很少不同

我的问题:

  • 如果我转换oldSet并转换newSetHashMap<Foo>(这里不关心顺序),以 ID 作为键,是否会使代码更易于阅读和比较?转换会损失多少时间和内存性能?
  • 迭代这两组并执行适当的操作会更有效和简洁吗?
0 投票
9 回答
322782 浏览

c# - 在 C# 中过滤集合

我正在寻找一种非常快速的方法来过滤 C# 中的集合。我目前正在使用通用List<object>集合,但如果它们表现更好,我愿意使用其他结构。

目前,我只是创建一个新的List<object>并循环通过原始列表。如果过滤条件匹配,我将副本放入新列表中。

有一个更好的方法吗?有没有办法就地过滤,所以不需要临时列表?