HashSet在存储元素的时候, 先调用对象的hashCode方法, 计算一个哈希值, 然后在集合中查找是否有哈希值相同的对象, 如果没有哈希值相同的对象,直接存入 如果有哈希值相同的对象, 则和哈希值相同的对象进行equals比较 , equals比较结果为false就存入,equals比较结果为true则不存,如果我们想在HashSet中存储自
定义对象, 并且去重复, 那么这个自定义的类必须重写hashCode和equals方法. 在向TreeSet中存储元素的时候, TreeSet会使用指定的比较算法对存储元素进行排序, 内部以二叉树形式进行存储. 指定比较算法的方式: 自然顺序: 在类上实现Comparable接口, 重写compareTo方法, 在方法中定义比较算法. 比较器顺序: 定义类实现Comparator接口, 重写compare方法, 创建比较器对象, 传入TreeSet构造函数. 如果我们想在TreeSet中存储自定义对象, 并且排序, 要么这个自定义的类实现Comparable接口, 要么在TreeSet中传入Comparator. |