导航:首页 > 数据分析 > 数据结构怎么输出不重复的有序表

数据结构怎么输出不重复的有序表

发布时间:2025-05-21 19:46:20

『壹』 Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的

你好,首先要明白一点:加入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是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例

阅读全文

与数据结构怎么输出不重复的有序表相关的资料

热点内容
少儿编程哪个语言比较好 浏览:562
三国群雄怎么升级快 浏览:379
两门编程语言哪个为主哪个为辅 浏览:334
哪里看app下载用了多少内存 浏览:415
苹果手机从上拉下来的是什么功能 浏览:138
不关服务改配置文件会出问题吗 浏览:358
三年级网络图怎么画 浏览:860
小马激活工具2008r2 浏览:802
手机安装包文件怎么修改内容 浏览:919
java定时任务删除文件 浏览:618
之前的秋霞网站现在改了什么 浏览:651
学ug编程看直播和视频哪个好 浏览:327
1520升级wp81正式版好吗 浏览:440
扬州千人在线版本 浏览:227
编程G后必须跟一个数什么意思 浏览:638
冰封王座塔防在哪个文件夹 浏览:958
用电脑有什么可以兼职的网站 浏览:233
applewatch登机牌 浏览:268
铁制文件柜哪个品牌质量好 浏览:10
联想主机系统的默认配置文件登录 浏览:78

友情链接