永发信息网

Set的元素重复是怎么判断的

答案:2  悬赏:0  手机版
解决时间 2021-01-27 17:54
Set的元素重复是怎么判断的
最佳答案
你好,首先要明白一点:加入Set里面的元素必须定义equals()方法以确保对象的唯一性。 第一个问题: TreeSet的底层实现是采用红-黑树的数据结构,采用这种结构可以从Set中获取有序的序列,但是前提条件是:元素必须实现Comparable接口
全部回答
你好,首先要明白一点:加入set里面的元素必须定义equals()方法以确保对象的唯一性。 第一个问题: treeset的底层实现是采用红-黑树的数据结构,采用这种结构可以从set中获取有序的序列,但是前提条件是:元素必须实现comparable接口,该接口中只用一个方法,就是compareto()方法。当往set中插入一个新的元素的时候,首先会遍历set中已经存在的元素(当然不是采用顺序遍历,具体采用什么方法,建议自己去看看源码),并调用compareto()方法,根据返回的结果,决定插入位置。进而也就保证了元素的顺序。 第二个问题: 上面已经说过,加入set里面的元素必须定义自己的equals()方法,但是对于良好的设计风格,最好在覆盖equals()方法的同时,也覆盖hashcode()方法,当然,对于treeset而言不用覆盖hashcode()方法也可。请记住:覆盖hashcode()方法的目的,只有一个原因就是提高效率。 在往set中插入新的对象时,首先会用该对象的hashcode()与已经存在对象的hashcode()做比较,如果相等,那就不能插入,如果不等,才会调用equals()方法,如果equals结果为true,说明已经存在,就不能再插入,如果为false,可以插入。 注:如果没有覆盖hashcode()方法,那就是只比较equals().对两个对象equals运算,是判断两个对象是否相等的关键。 第三个问题: 2)hashset与treeset区别: 1、treeset 是二差树实现的,treeset中的数据是自动排好序的,不允许放入null值 2、hashset 是哈希表实现的,hashset中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束 3、hashset要求放入的对象必须实现hashcode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的string对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
望姓的意思是什么啊?知道的请说下!
练胸肌前如何热身三角前束
迅驰网吧地址有知道的么?有点事想过去
爱尚美甲美睫-韩式半永久定妆地址好找么,我
vivox5pro屏幕周围出现闪红灯
《刀剑乱舞》景趣怎么得
杇墁的意思是什么啊?知道的请说下!
极速网吧(阳西店)地址有知道的么?有点事想过
草桥欣园炫彩美甲地址在什么地方,我要处理点
我发现一个物理现象,在我用热水泡手时,我越是
请问1月份的利润表如何编制?
广州金融街·融穗华府怎么样 在哪儿
按摩会把骨头按坏吗? 肌肉呢?
牛口之下的意思是什么啊?知道的请说下!
有一个韩国的关于超人的电影,男主角很帅(有
推荐资讯
谁知道,有一种音乐,不知道叫啥名字,就是新
vivoy51a用什么提root百分百得
(服务区)停车场(锦绣山庄服务区)怎么去啊,
战争对人类的灾难文章 今天要有
【解昕怡】为什么说许峰、解昕怡一加一等于二
玉玉美甲地址好找么,我有些事要过去
五四运动中,学生提出的斗争目标初步得以实现
可行性研究的基本要求包括()。A.预见性B.公
留学监理网和留学中介机构
懂行的朋友说说,家具手工雕刻和机器雕刻的区
饶河县殡仪馆地址在什么地方,我要处理点事
关于金价与美元的关系,说法正确的是()。A.如
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?