这里对java中常用的集合做一个小结

单列集合:Collection 单列集合的根接口

     List系列:有序,不唯一

       1,ArrayList  底层使用Object数组,查询快,插入删除慢

       2,LinkedList 底层使用链表数据结构,查询慢,增删快,有removeLast()方法,而ArrayList中没有

       3,Vector底层也采用Object数组,但是是线程安全的,操作效率低

      

     Set系列:无序,唯一

        1,HashSet 底层采用哈希表,存取速度快

       存储原理:当一个元素添加进hashSet时,会先调用该对象的hashCode方法得到哈希码值,将哈希码值通过计算得到该对象的存储位置,如果这个位置没有元素,那么该对象会被存储,如果有元素会调用该对象的equals方法

       返回true则该对象不会被存储,因此存入进hashSet中的对象一般会重写hashCode和equals方法

        2,TreeSet 底层采用红黑树,对存储进该集合中的元素进行排序存储

       TreeSet添加元素:如果添加的元素有自然顺序,那么TreeSet会按元素的自然顺序进行排序存储

                 如果添加的元素没有自然顺序,那么添加的对象排序时需要一个比较器

                              内部比较器:定义在自定义类的内部,实现Comparable接口

                              外部比较器:定义在自定义类的外部的自定义比较器类,实现Comparator接口,在创建TreeSet对象时传入一个自定义比较器类对象

双列集合:Map 双列集合的根接口, 存储key-value键值对,键不可重复,值可重复

       1,HashMap:底层也是hash表

        2,TreeMap:底层采用红黑树

       3,HashTable:线程安全,底层采用hash表,HashMap是其轻量级实现但是线程不安全