HashSet与TreeSet

Posted yuanfei1110111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashSet与TreeSet相关的知识,希望对你有一定的参考价值。

HashSet:(去重原理:hashCode,equals)
哈希表实现,数据无序;
不同步;
元素可以为null,但最多只能有一个;
当向HashSet中存入一个元素时,HashSet会调用该对象的hashCode方法来得到该对象的hash值,然后根据hash值决定该对象在HashSet中的存储位置。


TreeSet:(去重原理:compareTo)
二叉树实现,数据自动排序好的,不允许放入null值;
TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态;
TreeSet支持两种排序方式,自然排序和定制排序,其中自然排序为默认排序方式;
类实现Comparable接口,覆写其compareTo方法,如果compareTo方法返回0,说明是重复的,如果是负数,则往前面排,如果是正数,则往后面排。

代码示例:
    public static void main(String[] args) {

        Set<Person> set = new TreeSet<Person>();
        Person p1 = new Person();
        Person p2 = new Person();
        p1.setAge(1);
        p2.setAge(1);
        set.add(p1);
        set.add(p2);
        System.out.println(set2.size());
    }
    
    static class Person implements Comparable {
        
        private Integer age;
        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }

        @Override
        public int compareTo(Object o) {
            return this.age - ((Person)o).getAge();
        }
        
    }
}












































以上是关于HashSet与TreeSet的主要内容,如果未能解决你的问题,请参考以下文章

31.set集合与HashSet

HashSet的实现,与hashMap的关系

HashSet与TreeSet

HashSet与TreeSet

HashSet与HashMap

HashMap与HashSet的区别