Java中的集合框架Collection的子类-Set

Set :

元素不能重复,无序.

Set接口中的方法和Collection一致.

List集合的两个子类: **HashSet ** 与 **TreeSet **

    |--HashSet : 内部数据结构是哈希表,是不同步的.
    
        如何保证该集合的元素唯一性呢?
        
        是通过对象的hashCode和equals方法完成对象唯一性的.
        
        如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中
        
        如果对象的hashCode值相同,那么要再次判断对象的equals方法是否尾true
        
        如果为true,视为相同元素,不存,如果为false,那么视为不同元素,就进行存储

        记住: 如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法.
        一般情况下,如果定义的类会产生很多对象,比如人,学生,,通常都需要覆盖equals, hashCode方法
        建立对象判断是否相同的依据

         	子类: LinkedHashSet : 元素不可以重复,是有序的


    |--TreeSet : 可以对Set集合中的元素进行排序, 是不同步的
    
                    判断元素的唯一性的方式,就是根据比较方法的返回结果是否,0,就是相同元素,不存.

                 TreeSet对元素进行排序的方式之一:
                 
                 让元素自身具备比较功能,就需要实现Comparable接口,覆盖Comparable方法.

                 如果不要按照对象中具备的自然顺序进行排序. 如果对象不具备自然顺序. 怎么办?
                 
                 可以使用TreeSet集合的第二种排序方式:
                 
                 让集合自身具备比较功能, 定义一个类实现Comparator接口,覆盖compare方法
                 
                 将该类对象作为参数传递给TreeSet集合的构造函数

哈希表确定元素是否相同

    1.判断的是两个元素的哈希值是否相同,如果相同,在判断两个对象的内容是否相同

    2.判断哈希值相同,其实判断的是对象的hashCode的方法.判断内容相同的方法,用的是equals方法

注意:如果哈希值不同,是不需要判断equals

发布了87 篇原创文章 · 获赞 43 · 访问量 4024

猜你喜欢

转载自blog.csdn.net/weixin_42947972/article/details/103055938