Java集合

List:

(1)ArrayList:

    优点:底层数据结构为数组,查询快,增删慢,效率高。

    缺点:线程不安全。

(2)LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素

    优点:磁层数据结构为链表,查询慢,增删快,效率高。

    缺点:线程不安全。

(3)Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素

    优点:底层数据结构为数组,查询快,增删慢。

    缺点:线程安全,效率低。

Map:

(1)HashMap:

    1)采用哈希表算法,此时Map中的key不会保证添加的先后顺序,key不允许重复。

    2)key判断重复的标准是key1和key2是否equals为true,并且hashCode相等。

(2)LinkedHashMap

    1)采用链表和哈希表算法,此时Map中的key会保证添加的先后顺序,key不允许重复。

    2)key判断重复的标准是key1和key2是否equals为true,并且hashCode相等。

(3)HashTable:

    1) 采用哈希表算法,所有方法都使用synchronized修饰符,线程安全的,但是相对HashMap性能较低。

(4)TreeMap:

    1)采用红黑树算法,此时Map中的key会按照自然顺序或定制排序进行排序,key不允许重复。

    2)key判断重复的标准是compareTo/compare的返回值是否为0。

Set:

(1)HashSet:

    1) 不能保证元素的顺序,不可重复,不是线程安全的,集合元素可以为NULL。

    2)  底层数据结构为数组,查询快,增删慢。

    3) 两个对象通过equals()方法返回true,这两个对象的hashCode值也应该相同。

(2)LinkedHashSet:

    1) 不可重复,有序。

    2) 底层使用链表和哈希算法。链表保证元素的添加顺序,哈希表保证元素的唯一性。

(4)TreeSet:

    1)有序,不可重复,底层使用红黑树算法,擅长范围查询。

    2)如果使用TreeSet无参构造器创建一个TreeSet对象,则要求放入其中的元素的类必须实现Comparable接口,所以其中不能放入null元素。

    3)必须放入同样类的对象,因为默认会进行排序,否则可能会发生类型转换异常,我们可以使用泛型来进行限制。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容