功能网站模板,建立有效的什么机制,打鱼在线游戏网站建设,今天最新的招聘信息hashSet与treeSet的去重原理
1、TreeSet去重原理 #xff1a;compareTo 可以实现排序及去重#xff1a;如果compareTo返回0#xff0c;说明是重复的#xff0c;返回的是自己的某个属性和另一个对象的某个属性的差值#xff0c;如果是负数#xff0c;则往前面排#xff…hashSet与treeSet的去重原理
1、TreeSet去重原理 compareTo 可以实现排序及去重如果compareTo返回0说明是重复的返回的是自己的某个属性和另一个对象的某个属性的差值如果是负数则往前面排如果是正数往后面排 应用放入TreeSet中的对象类必须实现compareable接口覆写其compareTo方法根据自己的需要改变其排序及去重规则比如职员类根据其工资水平进行去重和排序 。
public class TestUser implements ComparableTestUser{...Overridepublic int compareTo(TestUser testUser) {...return ...;}
}TreeSetTestUser sets new TreeSet();
//必须实现Comparable接口否则会报错
sets.add(new TestUser());
2、hashSet去重原理1hashCode 2equals是否相同
我们使用Set集合都是需要去掉重复元素的, 如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降低了使用equals()方法的次数
当HashSet调用add()方法存储对象的时候, 先调用对象的hashCode()方法得到一个哈希值, 然后在集合中查找是否有哈希值相同的对象 如果没有哈希值相同的对象就直接存入集合如果有哈希值相同的对象, 就和哈希值相同的对象逐个进行equals()比较,比较结果为false就存入, true则不存
将自定义类的对象存入HashSet去重复 ◦类中必须重写hashCode()和equals()方法 hashCode(): 属性相同的对象返回值必须相同, 属性不同的返回值尽量不同(提高效率) equals(): 属性相同返回true, 属性不同返回false,返回false的时候存储。