问题标签 [linkedhashset]

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 回答
39919 浏览

java - Java HashSet 中的元素排序

为什么第二组和第三组保持顺序:

这是我得到的输出:

0 投票
2 回答
1659 浏览

java - LinkedHashSet 中的唯一 Java 对象

我想创建根据值排序的唯一键值对的前 5 个列表。

我曾尝试创建一个 Hashmap,但由于我从 JSON 读取的原始列表已排序,Hashmap 会覆盖最后一个值,因此它们的键将具有最小值而不是最大值。

解决方案是使用LinkedHashSet,以确保唯一性并保持顺序。但是由于我要存储一个键值对,所以我决定创建一个新类并将它们保存为对象。

我知道我必须实现可比较但显然没有比较发生并且 LinkedHashSet 不是唯一的。

我的代码是:

}

输出是:

[type=君主-信心=79.447838,type=君主-信心=58.911613,type=君主-信心=56.614368,type=建国图-信心=48.796387,type=政客-信心=38.921349,type=王后-信心=36.142864 ]

0 投票
1 回答
566 浏览

java - 当我使用@IdClass LinkedHashSet 时包含重复项

我的任务是准备一个报价搜索屏幕。我参考了一个 Oracle 视图来创建报价模型。由于视图表中没有 id 列,我更喜欢通过 quoteId.class 使用 @IdClass 注释使用复合 id。我在两个模型上都覆盖了 hashCode 和 equals 方法。quoteId equals & hashcode 返回所有字段的组合,quote hashcode & equals 只是比较模型中的 this.quoteNo 字段。

报价型号:

当我需要独特的物品时,我只是通过以下方式访问:

但是当我开始使用 idClass 时,我的linkedHashSet 包含所有项目,甚至它们的报价编号都相同。我是否缺少任何其他实现来通过引用无字段(可比较,比较器)来证明每个项目的唯一性?如果我跟踪 uniqueQuoteResult 列表项的值,它们都具有相同的报价编号。

编辑注意:我已经改变了使用 apache 库 HashCodeBuilder 和 EqualsBuilder 支持的方式,但问题仍然存在。我担心 idClass 哈希码对linkedhashset 生效

0 投票
3 回答
571 浏览

java - LinkHashMap/LinkedHashSet 中的迭代排序如何导致性能比 HashMap 略低

由于 LinkedHashMap/Set 保持 Collection 中的条目顺序,因此会导致性能稍低。我想知道为什么会这样。

0 投票
2 回答
843 浏览

java - HashSet 和 LinkedHashSet 有什么区别

我看到它LinkedHashSet扩展了HashSet,我知道它保持秩序。
但是,通过检查 JDK 中的代码,似乎LinkedHashSet只包含构造函数而没有实现,所以我猜所有的逻辑都发生在HashSet?
如果这是正确的,为什么要这样设计?这似乎很混乱。

编辑:这个问题有一个不幸的错误。我写了HashMapandLinkedHashMap而不是HashSetand LinkedHashSet。如果可能的话,我解决了这个问题。
另外,我很感兴趣为什么 Java 设计者选择这样实现它。

0 投票
5 回答
23983 浏览

java - Java LinkedHashSet 向后迭代

如何LinkedHashSet从最后一项到第一项迭代 a 的项?

0 投票
2 回答
830 浏览

java - Java LinkedHashSet 索引有效性

我一直在将大量 Java 代码移植到 C++ 中,并且在我离开时不得不实现 LinkedHashSet 之类的东西。我使用 Boost 的多索引容器对 LinkedHashSet/Map 进行了合理的复制。

当我移植代码时,我遇到了一些有趣的东西,其中包含 multi_index,因为包含的对象不是可变的(除非您将类的特定字段标记为可变)。但是,如果密钥是从包含的类的一些可变成员中计算出来的,那么事情就会变得有趣。

为了澄清一些事情,我想我会用 Java 写一个简单的例子来检查他们的 LinkedHashSet 的行为。结果让我有点惊讶;看起来它们的行为类似于 Boost 的多索引容器,因为在修改包含的对象时不会重新生成索引(如您所料);然而,编译器并没有以任何方式抱怨——似乎很容易让自己陷入困境(我正在移植的代码似乎犯了上述罪过,谁知道它仍然是如何工作的)。

这只是 Java 中缺少 const_iterators 的限制,还是我设法做了一些特别愚蠢或棘手的事情?

这是一个简单的例子:

它打印出以下内容:

有趣的是,它知道 Baz 变了;但是它仍然没有找到 Baz2。

显然这是人为的,但我正在查看的非常合理的代码似乎(通过多个间接)导致了这个问题。使用 Boost Multi Index 至少你必须 const-cast 一个迭代器来导致这个!

0 投票
1 回答
914 浏览

grails - 将 grails hasMany 从 LinkedHashSet 更改为 ArrayList

我有以下内容:

Grails 生成属性 b 为 a 的类LinkedHashMap。我想配置 Grails 以生成一个ArrayList代替。

我知道这可以通过显式编写列表来完成:

但我正在寻找一种通过一些外部配置来实现这一目标的方法。

0 投票
2 回答
16481 浏览

java - 如何从 Java 中的 LinkedHashSet 中获取一个元素?

我正在寻找将给定集合划分为不相交子集的代码。例如,一组足球运动员,我们根据他们所属的球队对他们进行划分。最后我想要一份代表名单,即每支球队的一名球员。

所有足球运动员都认识他们球队中的所有其他球员——这与复杂性非常相关。所以,我目前关于如何做到这一点的想法如下(set目前在哪里 a LinkedHashSet<T>):

然而,在 while 循环的每一步都构建一个新的迭代器感觉很奇怪。LinkedHashSet 应该在内部具有某种firstElement()功能(对于它的 LinkedList 行为),但由于某种原因,我找不到如何做到这一点。我也尝试了一个 foreach 循环,但这导致了java.util.ConcurrentModificationException.

我应该如何正确地做到这一点?

0 投票
1 回答
756 浏览

java - Hibernate all-delete-orphan 用于有序集合

我有这样的关系

在我的 Java 代码中,对此执行了一组操作,就像

现在这个 SomeBeans 是一个linkedHashmap,所以订单得到了维护,但是由于在级联中使用了所有 Delete Orphan,我在特定场景中遇到了异常:

所以我把上面的java实现改成

但是这样做我无法维持来自linkedHashMap SomeBeans 的订单。

有没有人也遇到过这样的问题,在这方面的任何帮助都将不胜感激

问候,

瓦布哈夫