Set接口

作者: 小_小_程序猿 | 来源:发表于2018-01-11 21:03 被阅读0次

    ## HashSet

        1. 添加元素的时候,每一次都会调用hashCode方法

        2. 重写equals方法和HashCode方法,也是首先调用hashCode方法,再来调用equals方法

        HashSet存储原理:【背下来!!!】

        向HashSet集合中添加元素,HashSet首先会调用该元素hashCode方法,获取该对象的Hash值

        通过【移位】运算,计算出,该元素应该保存在【哈希表】中哪一个位置

        情况1:

        该位置没有任何元素,直接放入

        情况2:

        该位置存在其他元素,哈希表就会调用该元素的equals方法,和已经保存在哈希表里面的元素进行

        比较

        如果比较结果为true 表示相同元素,无法添加

        如果比较结果为false,表示为不同元素,可以添加

        哈希表的每一个单元格都是一个桶式结构,可以保存多个元素,允许元素共存!!!

    ##  TreeSet

        TreeSet是一个树形结构的Set结构

    发现:

    TreeSet中添加元素原本是字符串类型,当添加自定义对象,或者数字的时候,报异常!!!

    ClassCastException

    原因:

    因为TreeSet是一个树形结构,所有的元素都需要进行比较之后才可以放入到Set集合中,而

    字符串和自定义类对象是没有比较的方式和方法的

    【要求】在TreeSet里面的所有的元素都要有【比较的方式】或者有【自然顺序】

    TreeSet添加自定义元素的方式:

    方式1:

    让这个自定义类【遵从】Comparable接口,实现compareTo方法

    方式2:

    自定义比较器,这个比较器是【遵从】Comparator接口,实现

    int compare(Object o1, Object o2)

    可以在创建TreeSet对象的时候,传入比较器对象作为比较方式

    相关文章

      网友评论

          本文标题:Set接口

          本文链接:https://www.haomeiwen.com/subject/digtoxtx.html