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

.net-3.5 - 本地化 IEnumerable 的最佳方法是什么?

本地化集合(IEnumerable)的最佳方法是什么?从 BL 我检索仍然需要本地化的实体集合,我想我编写了一个扩展 IEnumerable 并返回本地化列表的方法。

我怎样才能让下面的代码工作?有任何想法吗?也许更好的选择?

0 投票
4 回答
1134 浏览

.net - 哪些 dotnet 集合类的项目可以按“加法顺序”枚举并通过键检索?

我被引导相信我不能指望添加到字典中的项目的顺序来进行枚举。

是否有一个类(如果可能的话是通用的),可以使用键向其中添加项目并且可以按附加顺序枚举或可以通过键检索哪些项目?

澄清:我不想在 Key Order 中列举。我想按顺序列举。也就是说,我希望能够在 FIFO(先进先出)的基础上通过枚举来检索项目。

0 投票
3 回答
6032 浏览

java - 是否有“reduce”的类型安全 Java 实现?

我经常需要在 java 中运行 reduce(也称为 foldl / foldr,具体取决于您的上下文)来聚合 Itterable 的元素。

Reduce 接受一个集合/可迭代/等,一个由两个参数组成的函数,以及一个可选的起始值(取决于实现细节)。该函数依次应用于集合的一个元素和上一次reduce调用的输出,直到处理完所有元素,并返回最终值。

在任何常见的 java api 中是否有类型安全的 reduce 实现?谷歌收藏 似乎应该有一个,但我一直没能找到它。(可能是因为我不知道它会使用什么其他名称。)

0 投票
30 回答
504335 浏览

java - 遍历集合,在循环中删除对象时避免 ConcurrentModificationException

我们都知道您不能执行以下操作,因为ConcurrentModificationException

但这显然有时有效,但并非总是如此。下面是一些具体的代码:

当然,这会导致:

即使多个线程没有这样做。反正。

这个问题的最佳解决方案是什么?如何在不引发此异常的情况下循环从集合中删除项目?

我在Collection这里也使用了任意的,不一定是ArrayList,所以你不能依赖get.

0 投票
4 回答
6262 浏览

java - API java 5 及更多:我应该返回数组还是集合?

本着最佳实践的精神:总是返回一个____,而不是一个____,在我即将从 JDK1.4.2 迁移到 JDK5 等时,我面临着类似的问题。(是的,我知道JDK1.4.2 已停产! ;-))。

对于返回集合的函数(不是简单的属性集合),我总是更喜欢(在 JDK1.4.2 中)返回 Array 而不是泛型 List,因为:

  • 它强制返回类型(MyObject[]而不是对象列表,在静态上更加类型安全——如在“编译”——级别)
  • 它向返回的集合建议一个“只读”字符(将一个元素添加到集合中更复杂,即使这不像 c# 中的“只读”关键字那么严格)。这与说它是“不可变的”不同,因为数组内的引用仍然可以修改......

当然,我总是创建这个返回的数组(我不公开任何“内部”数组)

现在,在 JDK5 及更高版本中,我可以根据需要使用List<MyObject>

选择 returnMyObject[]而不是 List 或Collection<MyObject>在 java5 中编码的充分理由是什么?

如果使用奖金,是否Collection<MyObject>可以:

  • 对返回的集合强制执行只读属性?(没有add()remove()可能)
  • 对返回的集合强制执行不可变的方面?(即使该集合的引用也不能修改)

PS:JavaGenericFAQ没有那个。

0 投票
2 回答
1212 浏览

.net - 泛型类集合的最佳实践

考虑以下代码:

我想要 SomeClassX<T> 的集合,但是,这是不可能的,因为 SomeClassX<int> != SomeClassX<long> 和 List<SomeClassX<>> 是不允许的。

所以我的解决方案是让 SomeClassX<T> 实现一个接口并将我的集合定义为,其中 ISomeClassX 是接口:

这是最好的方法,还是有更好的方法?

0 投票
6 回答
20055 浏览

c# - 在 C# 中输出操纵的 QueryString

使用以下代码,我得到了一个很好的格式化字符串:

给了我类似的东西:&hello=worldµsoft=sucks

但是,当我使用此代码将集合克隆到另一个对象(相同类型)时,我会从 ToString() 方法中取回 Type()。

有没有一种更整洁的方式来输出它而不是手动查找和构建字符串?

0 投票
3 回答
4603 浏览

java - HashSet 问题——equals 和 hashCode 与 contains 的工作方式与我预期的不同

我有以下代码:

输出是:1 1 现在使用 HashSet:1 1 0

但是,我本来希望最后一行也是true(1)。有什么明显的东西我失踪了。

(是的,我知道我的equals方法和hashcode方法没有考虑到一些问题......它们故意简单,但如果有问题导致这个问题,请告诉我。)

0 投票
6 回答
2798 浏览

c# - 在.net 2中生成唯一集的最快方法是什么

我有一个本质上是名称值对的锯齿状数组 - 我需要从中生成一组唯一的名称值。锯齿状数组大约有 86,000 x 11 个值。我必须以何种方式存储名称值对(单个字符串“name=value”或专用类,例如 KeyValuePair)对我来说并不重要。
附加信息:有 40 个不同的名称和更多的不同值 - 可能在区域 10,000 个值中。

我正在使用 C# 和 .NET 2.0(性能太差了,我认为将整个锯齿状数组推入 sql 数据库并从那里进行选择可能会更好)。

以下是我正在使用的当前代码:

0 投票
4 回答
19975 浏览

c# - 从 SortedList 或 SortedDictionary 中获取第 i 个值

我有一个排序的对象集合(它可以是 SortedList 或 SortedDictionary,我将主要用于阅读,因此添加性能并不那么重要)。如何获得第 i 个值?

因此,例如,当我在集合中有数字 1、2、3、4、5 并且我想要中位数(本例中为 3)时,我该怎么做?