首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >集合,哪种方法用于授权添加元素?

集合,哪种方法用于授权添加元素?
EN

Stack Overflow用户
提问于 2010-05-22 18:10:33
回答 2查看 89关注 0票数 0

我们在Collection下发现了很多具体的子类。

当尝试在一个具体的集合中添加一个元素时,该集合将使用一个方法来确定它是否可以接受存储该元素(并最终确定该元素不在该集合中)。它可以使用元素的equals()hashCode()compareTo()

是否可以找到每个Collection实现都使用哪种方法的摘要?

非常感谢你的回答。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-22 21:43:54

首先,不是所有的集合都要检查您添加的元素是否已经存在于集合中。例如,ArrayList只是将元素附加到列表的尾部,而不检查它是否已经在列表中。如果保证集合只有一个对象副本,则其他类使用equals;如果假设元素是可比较的,并且对集合进行排序,则使用compareTo (以找到正确的插入位置)。映射还将使用equals来检查键,但像HashMap这样的映射也将使用hashCode()来加快搜索过程(它们首先获取具有相同散列码的所有键,然后对每个键使用equals来查找键是否已经存在并分配了值,然后将替换该值)。

但是,如果您想了解它们是如何工作的,可以查看jdk附带的源代码。在eclipse中,我将JRE设置到安装jdk的文件夹中,并且我可以使用CTRL+SHIFT+T打开jdk中的任何类(类型),打开类名,或者对于方法,甚至可以打开CTRL+click -> CTRL+click实现,它会打开一个弹出窗口,其中包含实现该方法的类(如果它来自接口,或者直接在类中打开方法,如果不是接口)。

票数 1
EN

Stack Overflow用户

发布于 2010-05-22 18:15:50

任何具体的实现都应该在其API文档中指明它对其元素的行为所做的假设。

通常,基于哈希的集合使用hashCode(),基于树的集合使用compareTo()Comparator,并且它们都使用equals()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2887682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档