Map集合

2020-04-22  本文已影响0人  Hoffnung_8164

Collection接口:add(),remove(),size(),iterator()。。。

    List子接口:add(index,E),remove(index),get(index),set(index,E),subList(),indexOf(),listIterator()...

    有序,有下标,index

        允许存储重复的元素

        实现类:

    ArrayList:底层采用数组结构来实现。

    LinkedList:底层采用双向链表来实现。

    Vector:旧的类,线程安全,效率低。被ArrayList替代。

        Set子接口:

        无序

        不允许存储相同的元素——>去重

    实现类:

        HashSet:底层采用哈希表结构来实现。

            step1:对象的hashCode码,不相同就直接存储了。如果相同,进入第二步

            step1:对象的equals()方法。

        true:相同对象

        false:不同对象

    重写以上两个方法:Object类:hashCode(),equals()

对象的各个属性值都相同——>相同的元素,重复的。

同时重写hashCode()和equals()

规则:

        hashCode:如果对象相同,保证哈希值必须相同。如果对象不同,哈希值尽可能不同。

        equals:如果对象相同,必须返回true。如果对象不同,必须返回false。

        TreeSet:底层采用二叉树结构来实现。

        TreeSet--->SortedSet接口--->Set接口

    去重的同时,还给元素进行排序。

        java.lang.Comparable接口:强行对该接口的实现类对象进行比较排序。

        compareTo(o)--->int

    o1,o2比较大小

        正数:this对象>o对象,排后面。

        负数:this对象<o对象,排前面

        零:this对象和o对象相同,不存储。——>去重

2.1、Comparable接口

            java.lang.Comparable接口:给对象强行排序的。默认的比较器。

            intcompareTo(To)

        将此对象与指定的对象进行比较以进行排序。

        比较的两个对象:this对象和参数o对象比较

说明:排序的规则

        正数:this对象>o对象,排后面。

        负数:this对象<o对象,排前面

        零:this对象和o对象相同,不存储。——>去重

2.2、Comparator接口

        java.util.Comparator接口:给对象强行排序的。自定义的比较器。

        intcompare(To1,To2)

        比较其两个参数的顺序。

        比较的两个对象:o1和o2

    说明:排序的规则

        正数:o1对象>o2对象,排后面。

        负数:o1对象<o2对象,排前面

        零:o1对象和o2对象相同,不存储。——>去重

        注意点:创建一个TreeSet集合,到底使用哪个比较器?Comparable?Comparator?

            无参构造:new TreeSet();-->使用默认的比较器:Comparable

            有参构造:new TreeSet(Comparator)-->使用自定义的比较器:Comparator

2.3、LinkedHashSet集合

    回忆:HashSet存储特点?1、无序。2、去重

    HashSet存储数据,记录存储的顺序。

    Set集合的另一个实现类:LinkedHashSet

    存储原理同HashSet相同,但是外层套了一个链表结构。用于记录存储的顺序。

上一篇 下一篇

猜你喜欢

热点阅读