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

java - 如何在运行时实例化给定数组类型的 Java 数组?

在 Java 集合框架中,Collection 接口声明了以下方法:

<T> T[] toArray(T[] a)

返回一个包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果集合适合指定的数组,则在其中返回。否则,将使用指定数组的运行时类型和此集合的大小分配一个新数组。

如果你想实现这个方法,你将如何创建一个只有在运行时才知道的a类型的数组?

0 投票
4 回答
3289 浏览

nhibernate - 使用 NHibernate 映射枚举集合

使用 NHibernate 映射枚举集合

具体来说,使用 Attributes 进行映射。

目前我有这个工作将集合映射为 Int32 类型,NH 似乎可以处理它,但它并不完全理想。

尝试将集合映射为我尝试映射的枚举类型时,我收到的错误是“无法确定类型”。

我发现一个帖子说将一个类定义为

然后将枚举映射为 CEnumType,但这会给出“CEnumType is not mapped”或类似的东西。

那么有没有人有这样做的经验?

所以无论如何,只是一个简单的参考代码片段来举一个例子

那么,任何人都得到了正确的属性让我将这个枚举集合映射为实际的枚举?如果它们也作为字符串而不是整数存储在数据库中,那就太好了,但这并不是完全必要的。

0 投票
28 回答
330836 浏览

java - 在 Java 中增加 Map 值的最有效方法

我希望这个问题对于这个论坛来说不是太基本,但我们会看到。我想知道如何重构一些代码以获得更好的性能,这些代码正在运行很多次。

假设我正在使用 Map(可能是 HashMap)创建一个词频列表,其中每个键都是一个字符串,其中包含正在计算的单词,值是一个整数,每次找到单词的标记时都会递增。

在 Perl 中,增加这样一个值非常容易:

但是在Java中,它要复杂得多。这是我目前正在这样做的方式:

这当然依赖于较新 Java 版本中的自动装箱功能。我想知道您是否可以提出一种更有效的方法来增加这样的值。避免使用 Collections 框架并改用其他东西是否有很好的性能原因?

更新:我已经对几个答案进行了测试。见下文。

0 投票
14 回答
19337 浏览

c# - 在 C# .NET 2.0 中,反向执行 foreach 的简单方法是什么?

假设我有一个 Dictionary 对象:

现在我想以相反的顺序遍历字典。我不能使用简单的 for 循环,因为我不知道字典的键。foreach很简单:

但是我怎样才能反过来执行呢?

0 投票
2 回答
6639 浏览

vb.net - Visual Basic 2008 中的集合初始化语法?

我正在尝试确定 Visual Basic 2008(如果重要的话,Express 版)中是否有办法进行内联集合初始化,例如 JavaScript 或 Python:

我知道 Visual Basic 2008 支持这样的数组初始化,但我似乎无法让它为集合工作......我的语法错误,还是只是没有实现?

0 投票
9 回答
7178 浏览

java - java 集合的不可修改包装器是否使它们成为线程安全的?

我需要使 ArrayList 的 ArrayLists 线程安全。我也不能让客户对收藏进行更改。不可修改的包装器会使其线程安全,还是我需要在集合上使用两个包装器?

0 投票
16 回答
24612 浏览

java - Java中的Iterator接口有什么好处?

我刚刚了解了 Java 集合框架如何在链表中实现数据结构。据我了解,Iterators这是一种遍历数据结构(例如列表)中的项目的方法。为什么要使用这个接口?为什么是方法hasNext()next()remove()不是直接编码到数据结构实现本身?

来自 Java 网站:链接文本

公共接口迭代器<E>

集合上的迭代器。Iterator 在 Java 集合框架中取代了 Enumeration。迭代器在两个方面不同于枚举:

  • 迭代器允许调用者在具有明确定义的语义的迭代期间从底层集合中删除元素。
  • 方法名称已得到改进。
此接口是 Java 集合框架的成员。

我尝试谷歌搜索,似乎无法找到明确的答案。有人能解释一下 Sun 选择使用它们的原因吗?是因为更好的设计吗?提高安全性?好的OO实践?

任何帮助将不胜感激。谢谢。

0 投票
4 回答
4889 浏览

.net - 如何以相反的顺序迭代 .Net IList 集合?

我有一个包含项目的 IList(首先是父项),它们需要以相反的顺序添加到图表文档中,以便最后添加父项,绘制在顶部,以便用户首先选择它。

最好的方法是什么?比我现在在下面发布的更好/更优雅的东西..

0 投票
6 回答
431 浏览

c# - 检查重复项时的性能

我一直在做一个项目,我需要遍历数据集合并删除“主键”重复的条目。我试过使用

使用字典,我发现性能稍好一些,尽管我从不需要为每个条目标记布尔值。我的期望是,这是因为 List 允许索引访问,而 Dictionary 不允许。我想知道的是,有没有更好的解决方案来解决这个问题。我不需要再次访问这些条目,我只需要跟踪我所看到的“主键”并确保我只对具有新主键的条目执行添加工作。我正在使用 C# 和 .NET 2.0。而且我无法控制修复输入数据以从源中删除重复项(不幸的是!)。所以你可以对缩放有感觉,总的来说,我在应用程序中检查了大约 1,000,000 次重复,但在不超过大约 64,000 的子集中需要唯一。

0 投票
7 回答
35408 浏览

java - 如何在 Java 中查询对象集合(Criteria/SQL-like)?

假设您有一个包含数百个内存对象的集合,并且您需要查询此 List 以返回与某些 SQL 或 Criteria 之类的查询匹配的对象。例如,您可能有一个 Car 对象列表,并且您希望返回 1960 年代制造的所有汽车,车牌以 AZ 开头,按车型名称排序。

我知道JoSQL,有没有人使用过这个,或者对其他/本土解决方案有任何经验?