zoukankan      html  css  js  c++  java
  • java集合框架

    一、集合的主要类关系图

                                  

     二、接口api

     三、set接口的实现类

      1、HashSet,存储原理,是通过hashmap存储

        public boolean add(E e) {
            return map.put(e, PRESENT)==null;
        }

        特点:

          a.非线程安全类

          b.无序的

          c.值不可重复

      2、LinkedHashSet,继承HashSet,多维护了一个链表,保证有序

      3、TreeSet,

      TreeSet时SortedSet接口的实现类,TreeSet可以保证元素处于排序状态,它采用红黑树的数据结构来存储集合元素。TreeSet支持两种排序方法:自然排序和定制排序,默认采用自然排序。

      ·自然排序

      TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素的大小关系,然后将元素按照升序排列,这就是自然排序。如果试图将一个对象添加到TreeSet集合中,则该对象必须实现Comparable接口,否则会抛出异常。当一个对象调用方法与另一个对象比较时,             例如obj1.compareTo(obj2),如果该方法返回0,则两个对象相等;如果返回一个正数,则obj1大于obj2;如果返回一个负数,则obj1小于obj2。

      Java常用类中已经实现了Comparable接口的类有以下几个:

      ♦ BigDecimal、BigDecimal以及所有数值型对应的包装类:按照它们对应的数值大小进行比较。

      ♦ Charchter:按照字符的unicode值进行比较。

      ♦ Boolean:true对应的包装类实例大于false对应的包装类实例。

      ♦ String:按照字符串中的字符的unicode值进行比较。

      ♦ Date、Time:后面的时间、日期比前面的时间、日期大。

      对于TreeSet集合而言,它判断两个对象是否相等的标准是:两个对象通过compareTo(Object obj)方法比较是否返回0,如果返回0则相等。

      ·定制排序

      想要实现定制排序,需要在创建TreeSet集合对象时,提供一个Comparator对象与该TreeSet集合关联,由Comparator对象负责集合元素的排序逻辑。

      综上:自然排序实现的是Comparable接口,定制排序实现的是Comparator接口。

    四、List接口的实现类

      1、ArrayList  数组实现

      2、LinkedList   链表实现,实现了Deque接口,可以当作双端队列来使用

      3、Vector

      4、Stack  继承自Vector,实现一个后进先出的堆栈

    五、Map

      1、HashMap

        java7实现方式数组加链表,java8优化为数组+链表+红黑树,树化的的条件是链表的数量超过8个,并且数组的长度大于等于64,否则先进行扩容

      2、HashTable

        线程安全的map操作

      3、LinkedHashMap

        LinkedHashMap使用双向链表LinkedKeySet extends AbstractSet来维护key-value对的次序(其实只需要考虑key的次序即可),该链表负责维护Map的迭代顺序,与插入顺序一致,因此性能比HashMap低,但在迭代访问Map里的全部元素时有较好的性能。 

      4、Properties

        Properties类时Hashtable类的子类,它相当于一个key、value都是String类型的Map,主要用于读取配置文件。

      5、TreeMap

        SortedMap的实现类,是一个红黑树的数据结构,每个key-value对作为红黑树的一个节点。TreeMap存储key-value对时,需要根据key对节点进行排序。TreeMap也有两种排序方式:

        ♦ 自然排序:TreeMap的所有key必须实现Comparable接口,而且所有的key应该是同一个类的对象,否则会抛出ClassCastException。

        ♦ 定制排序:创建TreeMap时,传入一个Comparator对象,该对象负责对TreeMap中的所有key进行排序。

     

  • 相关阅读:
    bzoj 1031: [JSOI2007]字符加密Cipher
    python re模块实现计算器
    python sys模块和序列化模块
    python time时间模块
    python 发红包的小程序
    python ranndom模块及生成验证码
    python os模块练习题
    python os模块常用命令
    快速排序,归并排序
    选择排序和插入排序
  • 原文地址:https://www.cnblogs.com/sglx/p/15181485.html
Copyright © 2011-2022 走看看