希望有人能解释为什么我无法从中检索元素HashSet
。
考虑我HashSet
包含正确地覆盖MyHashObjects
了它们hashCode()
和equals()
方法的列表。
我希望做的是构造一个MyHashObject
我自己,并将相关的哈希码属性设置为某些值。我可以查询该方法,HashSet
以查看集合中是否存在“等效”对象contains()
。因此,即使contains()
两个对象返回true,它们也可能不是==
真实的。
为何没有get()
类似的方法contains()
呢?
有兴趣了解此API决策背后的想法
如果知道要检索的元素,那么您已经有了该元素。Set
给定一个元素,答案的唯一问题是它是否contains()
存在。
如果要迭代元素,请使用Set.iterator()
。
听起来您要尝试的是为元素的等价类指定一个规范元素。您可以使用Map<MyObject,MyObject>
来执行此操作。
如果您真的确定要找到一个元素,该.equals()
元素必须具有您必须使用的约束,那么HashSet
我认为您一直在遍历它并检查equals()
自己。该API不允许您通过其哈希代码来获取某些东西。因此,您可以执行以下操作:
MyObject findIfPresent(MyObject source, HashSet<MyObject> set)
{
if (set.contains(source)) {
for (MyObject obj : set) {
if (obj.equals(source))
return obj;
}
}
return null;
}
蛮力和O(n)丑陋,但是如果那是您需要做的…
问题内容: Java中是否有一种方法,只需指定开始索引和结束索引,即可将对象列表从Arraylist获取到另一个ArrayList? 问题答案: 是的,您可以使用以下方法: 这将返回原始列表那部分的视图,它不会复制数据。 如果要复制:
问题内容: 为什么第二和第三组保留顺序: 这是我得到的输出: 问题答案: 第二个(仅使用)只是一个巧合。从JavaDocs: 此类实现Set接口,该接口由哈希表(实际上是HashMap实例)支持。它不保证集合的迭代顺序。 特别是,它不能保证顺序会随着时间的推移保持恒定 。此类允许使用null元素。 第三个()设计为: Set接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与HashSet的不同
Java中用于检索未排序整数数组中元素的索引的内部数据查询是什么。 不使用任何集合类型进行检索的过程是什么?
主要内容:1 什么是Java HashSet,2 List和Set的区别,3 Java HashSet的层次结构,4 Java HashSet的语法,5 Java HashSet的构造方法,6 Java HashSet的方法,7 Java HashSet的例子,8 Java HashSet排除重复元素,9 Java HashSet删除元素,10 用Collection构造HashSet1 什么是Java HashSet Java HashSet类用于创建使用哈希表进行存储的集合。它继承了Abst
问题内容: 因此,如果我尝试在迭代时从Java HashSet中 删除元素,则会收到 ConcurrentModificationException 。如下例所示,从 HashSet中 删除元素子集的最佳方法是什么? 这是一个解决方案,但我认为它不是很优雅: 谢谢! 问题答案: 您可以手动遍历集合的元素: 您通常会使用循环而不是循环来查看此模式: 正如人们指出的那样,使用循环是优选的,因为这样可以
问题内容: 我是XML的新手。我想根据请求名称阅读以下XML。请帮助我了解如何以Java读取以下XML 问题答案: 如果你的XML是字符串,则可以执行以下操作: 如果你的XML在文件中,Document document则将被实例化为: 在document.getDocumentElement()返回你是文档的文档元素节点(你的情况 )。 一旦有了rootElement,就可以访问元素的属性(通过