美文网首页
java day 13

java day 13

作者: Tertou萧燚 | 来源:发表于2016-07-26 17:09 被阅读0次

    Comparable和Comparetor

    • Comparable
      一个实现了Comparable接口的对象的实例可以被用于相同对象的不同实例阶段。
    $)6$}B`}PR55E(VP$K4M1WH.png

    ![


    Uploading J[ZUL2`OR8_747$XI0Y~DDC_897851.png . . .]
    • Comparator
      一个实现了Comparator接口的对象能够对比不同对象。

    降序排序


    ZUL2`OR8_747$XI0Y~DDC.png

    升序排序

    ![XYS$$%8N]](EY`076%DM%9B.png](https://img.haomeiwen.com/i2457754/ed021dccdd92d001.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    %10O834)MKKV$R$U3YPJWVY.png

    Set接口

    • Set不保存重复的元素。Set中最常被使用的是测试归属性,可以很容易的询问某个对象是否在某个Set中。Set具有与Collection完全一样的接口,因此没有任何额外的功能。实际上Set就是Collection,只是行为不同。
      实现了Set接口的主要有HashSet、TreeSet、LinkedHashSet这几个共同点就是每个相同的项只保存一份。他们也有不同点:
      1.HashSet
       HashSet使用的是相当复杂的方式来存储元素的,使用HashSet能够最快的获取集合中的元素,效率非常高(以空间换时间)。会根据hashcode和equals来判断是否是同一个对象,如果hashcode一样,并且equals返回true,则是同一个对象,不能重复存放。用hashCode()和equals()方法来区分同一对象后,就不能存放同一对象了。如果注释这两个方法,则所有对象视为不同对象,都可以存放。
      HashSet的特点:
      (1)不能保证元素的排列顺序,顺序有可能发生变化
      (2)不是同步的
      (3) 集合元素可以是null,但只能放入一个null
      2.TreeSet
        TreeSet也不能存放重复对象,但是TreeSet会自动排序,如果存放的对象不能排序则会报错,所以存放的对象必须指定排序规则。排序规则包括自然排序和客户排序。
        自然排序:TreeSet要添加哪个对象就在哪个对象类上面实现java.lang.Comparable接口,并且重写comparaTo()方法,返回0则表示是同一个对象,否则为不同对象。
        客户排序:建立一个第三方类并实现java.util.Comparator接口。并重写方法。定义集合形式为TreeSet ts = new TreeSet(new 第三方类());
      3.LinkedHashSet
        LinkedHashSet按照插入顺序保存对象,同时还保存了HashSet的查询速度。LinkedHashSet集合是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序。这样使得元素看起 来像是以插入顺序保存的,也就是说,当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素。
      LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。

    相关文章

      网友评论

          本文标题:java day 13

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