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

java - 以相反的顺序打印出任何集合中的项目?

我的数据结构和使用 Java 解决问题一书中有以下问题:

编写一个例程,使用 Collections API 以相反的顺序打印出任何 Collection 中的项目。不要使用 ListIterator。

我没有把它放在这里,因为我希望有人做我的作业,我似乎无法准确理解它要求我编写什么代码!

当它要求我写一个“例程”时,它是在寻找一个单一的方法吗?我真的不明白如何使单一方法适用于所有各种类型的集合(链表、队列、堆栈)。

如果有人能指导我正确的方向,我将不胜感激。

0 投票
10 回答
4992 浏览

.net - 在哪里可以了解各种类型的 .NET 列表?

有没有人知道一个很好的资源来简明地解释 C# 中可用的不同类型的列表以及何时使用它们是合适的?

例如,列表、哈希表、字典等。

我从不太确定什么时候应该使用什么。

0 投票
4 回答
1802 浏览

c# - 可以在 KeyedCollection 中使用 int 作为键吗

很多时候,我需要一组带有数字标识符的非顺序对象。我喜欢为此使用 KeyedCollection,但我认为有一个严重的缺点。如果使用 int 作为键,则不能再通过索引访问集合成员(collection[index] 现在实际上是 collection[key])。这是一个足够严重的问题来避免使用 int 作为键吗?更可取的选择是什么?(也许是 int.ToString()?)

我以前这样做过,没有任何重大问题,但最近我遇到了一个令人讨厌的问题,如果密钥是 int,则针对 KeyedCollection 的 XML 序列化不起作用,这是由于.NET 中的一个错误

0 投票
2 回答
286 浏览

c# - 关于泛型及其接口的最佳资源是什么?

我找到了许多关于IEnumeratorIEnumerable、及其通用对应物ICollection的文档和建议。IList遗憾的是,我还没有找到解释整个接口层次结构、这些接口的通用实现以及每种类型的最佳用法的教程或书籍。

关于泛型、它们的接口以及 C# 中的推荐用法示例,您最好的知识来源是什么?

0 投票
39 回答
891173 浏览

java - 如何从 ArrayList 中删除重复的元素?

我有一个ArrayList<String>,我想从中删除重复的字符串。我怎样才能做到这一点?

0 投票
4 回答
1704 浏览

java - 如何将排序后的索引映射回我正在排序的集合的原始索引

我有一个集合 (List<Rectangle>),我需要对它进行左右排序。那部分很容易。然后我想以原始顺序遍历矩形,但很容易在排序集合中找到它们的索引。indexOf() 不起作用,因为我可能有许多相等的对象。我不禁觉得应该有一个简单的方法来做到这一点。

0 投票
15 回答
161262 浏览

c# - 从集合中删除项目的最佳方法

一旦项目已知,但不是它的索引,从 C# 中的集合中删除项目的最佳方法是什么?这是一种方法,但充其量似乎是不雅的。

我真正想做的是找到要按属性(在本例中为名称)删除的项目,而无需遍历整个集合并使用 2 个附加变量。

0 投票
5 回答
2527 浏览

java - 在 Java 6 中用于同时访问列表的最佳方法

我有一个被多个线程访问的 List 对象。更新列表的主要是一个线程,在某些情况下是两个线程。根据正在处理的用户请求的数量,可以从该列表中读取一到五个线程。该列表不是要执行的任务队列,它是同时检索和更新的域对象的列表。

现在有几种方法可以使对该列表的访问成为线程安全的:
- 使用同步块
- 使用普通(即读写操作共享相同的锁)
- 使用 ReadWriteLock -
使用新的ConcurrentBLLABLBA集合类之一

我的问题:
考虑到关键部分通常不包含很多操作(主要是添加/删除/插入或从列表中获取元素),最佳的使用方法是什么?
你能推荐另一种方法,上面没有列出吗?

一些限制
- 最佳性能至关重要,内存使用量不大
- 它必须是有序列表(当前在ArrayList上同步),尽管不是排序列表(即不使用 Comparable 或 Comparator 排序,而是根据插入顺序)
-列表很大,最多包含 100000 个域对象,因此使用 CopyOnWriteArrayList 之类的东西是不可行
的 - 写入/更新关键部分通常非常快,执行简单的添加/删除/插入或替换(设置​​)
- 读取操作将主要执行一个 elementAt(index) 调用大部分时间,虽然一些读取操作可能会进行二进制搜索,或者 indexOf(element)
- 没有对列表进行直接迭代,尽管像 indexOf(..) 这样的操作将遍历列表

0 投票
7 回答
25827 浏览

c# - 从 C# 中的基类访问派生类的属性

在 C# 中,当泛型列表仅包含基类时,访问派生类属性的最佳方法是什么。

0 投票
9 回答
3181 浏览

java - 为什么不允许外部接口为 HashMap 提供 hashCode/equals?

使用 aTreeMap提供 custom 是微不足道的Comparator,从而覆盖Comparable添加到地图的对象提供的语义。HashMap但是不能以这种方式控制 s;提供散列值和相等性检查的函数不能被“侧载”。

我怀疑设计一个界面并将其改造成HashMap(或一个新类)既容易又有用?像这样的东西,除了更好的名字:

不区分大小写Map的问题得到了一个简单的解决方案:

这是否可行,或者你能看到这种方法的任何基本问题吗?

是否在任何现有(非 JRE)库中使用了该方法?(试过谷歌,没有运气。)

编辑:hazzen 提出了很好的解决方法,但恐怕这是我试图避免的解决方法...... ;)

编辑:将标题更改为不再提及“比较器”;我怀疑这有点令人困惑。

编辑:接受与性能相关的答案;会喜欢更具体的答案!

编辑:有一个实现;请参阅下面接受的答案。

编辑:改写第一句以更清楚地表明这是我所追求的侧载(而不是排序;排序不属于 HashMap)。