gpt4 book ai didi

java - 在数据结构中重复插入时返回对象?

转载 作者:行者123 更新时间:2023-12-01 21:55:46 24 4
gpt4 key购买 nike

我当前正在将对象插入到哈希集中(将节点插入到图表中)。每当我插入重复项时,我都会返回 false。这是很好的反馈,但我更愿意看到返回的对象,这样我就可以使用它。现在我可以想出以下任一方案:

  • 插入对象,如果它是重复的,则迭代该集合并再次比较以检索该对象。效率非常低。

  • 首先对其进行迭代,并在其唯一时插入,否则编辑集合中的对象。就我的目的而言,这效率更低,因为我预计不会有太多重复项。

我错过了什么吗?

我可以使用Map<K,V>并使用相同的对象作为键和值。但这可能会比 Set 使用更多的内存?但我仍然缺少 map 的功能。 hashMap.put(key, value)总是会返回该值。那么我如何知道该值何时重复呢?在这种情况下,我仍然必须查找要插入的每一对。

所以也许我忽略了适合我需求的数据结构?我只想插入对象并在重复条目上使用数据结构中已有的对象。因为据我所知,如果数据结构已经知道有一个重复项,它也应该可以访问这个重复项,我真的很喜欢这个对象。

  • 我确实需要数据中的对象,有人说我已经拥有该对象,因为它是重复的。但如果我更改该对象,集合中的对象将不会更改。

  • 别担心,我从坐标生成哈希码,这些是最终的(不可变的)。我将向其添加与其他节点的连接,它们不会改变散列或排序顺序。

  • 我真的不想使用迭代器。数据结构包含单词 hash 是有原因的。 。通过使用树查找和其他我不应该谈论的东西,它们的工作速度要快得多,因为我对它们了解不够。

最佳答案

您对Map的想法可能适合您的需求。

I could use a Map and use the same object for the key and value. But this will probably use more memory then Set?

HashSet 是通过 HashMap 实现的 - 所以不会有什么区别。

But I'm still missing functionality for the map. hashMap.put(key, value) will always return the value.

如果没有映射,它将返回null。所以除非你需要存储空值,否则你可以这样实现:

T duplicate = map.put(newValue, newValue);
if (duplicate != null) {
map.put(duplicate, duplicate); // if you need old object in case of duplicate
processDuplicate(newValue, duplicate);
}

关于java - 在数据结构中重复插入时返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34342147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com