Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的?比如说:ArrayList 和 Vector 是用数组的方式存储的Set里的 hashSet 和TreeSet是用什么方式存储的?怎么判断重不重复的?hashSet 和TreeSet两

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 05:13:57
Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的?比如说:ArrayList 和 Vector 是用数组的方式存储的Set里的 hashSet 和TreeSet是用什么方式存储的?怎么判断重不重复的?hashSet 和TreeSet两

Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的?比如说:ArrayList 和 Vector 是用数组的方式存储的Set里的 hashSet 和TreeSet是用什么方式存储的?怎么判断重不重复的?hashSet 和TreeSet两
Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的?
比如说:ArrayList 和 Vector 是用数组的方式存储的
Set里的 hashSet 和TreeSet是用什么方式存储的?
怎么判断重不重复的?
hashSet 和TreeSet两个的区别是什么?

Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的?比如说:ArrayList 和 Vector 是用数组的方式存储的Set里的 hashSet 和TreeSet是用什么方式存储的?怎么判断重不重复的?hashSet 和TreeSet两
首先要明白一点:加入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是一样,所以放入的内容不能重复.但是同一个类的对象可以放入不同的实例

Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的?比如说:ArrayList 和 Vector 是用数组的方式存储的Set里的 hashSet 和TreeSet是用什么方式存储的?怎么判断重不重复的?hashSet 和TreeSet两 为什么集合里的元素不能重复? java中set集合中元素不重复是根据什么来判断的 请问带有重复元素的集合的子集数是多少. (转)Set里的元素是不能重复的,那么用什么方法来区分 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别? Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别? Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 如何获得Set集合指定位置的元素 一个集合的元素能不能有重复的? HashSet集合的特点是元素无序和不重复. set集合中是怎么确保集合元素的唯一性?他的实现原理是什么? java 关于集合Set接口的实现类中 元素相等的问题Set中的hashCode是否是用来确定元素在集中位置的东西?如果是的话,为什么不能单凭equal()方法检验两个元素是否相同呢?Set集中不是不能含有相同 一个集合有n个元素,请问怎么算出来它的子集(包括... 怎么理解Set集合中的HashSet中的元素是无序的? 关于python里面的set,set之后的集合元素是如何让排列的RT,看下面的例子,>>>set('cheeseshop')set(['c','e','h','o','p','s'])>>>set('shop')set(['h','s','o','p'])>>> set('01234')set(['1', '0', '3', '2', '4'])>>> set('1234')set(['1', ' 集合中不能有两个相同的元素吗?为什么?那么要是将这个元素放2个位置那么怎么办? 集合中的元素可不可以重复