Java集合总结

在这里插入图片描述

在这里插入图片描述

集合和数组的比较

数组不是面向对象的,集合弥补了数组缺陷,更灵活实用。不同的集合框架适用于不同场合。具体区别如下:

  1. 数组能存放基本数据类型和对象,集合类中只能存放对象
  2. 数组很难动态改变,集合类容易动态改变
  3. 数组无法判断其中实际元素个数,length()只告诉了数组的容量,而集合的size()可以
  4. 集合有多种实现方式、不同适用场合,数组仅采用顺序表方式
  5. 集合以类的形式存在,具有封装、继承、多态等特性,通过简单方法和属性即可实现各种复杂操作,大大提高了开发效率

Collection和Collections的区别

  1. Collection是Java提供的集合接口,存储一组不唯一、无序的对象。它有两个子接口ListSet
  2. Java还有一个Collections类,专门用来操作集合类,它提供了一系列的静态方法实现对各种集合的搜索、排序、线程安全化等操作。

ArrayList和LinkedList的联系和区别

  • ArrayList实现了长度可变的数组,在内存中分配连续空间。遍历元素和随机访问元素效率比较高。

  • LinkedList采用链表存储方式。插入、删除效率比较高。

Vector和ArrayList的联系和区别

  • 实现原理相同,功能相同,都是长度可变的数组结构,多数时候可以互用。

  • 区别:

    1. Vector是早期的JDK接口,ArrayList是替代Vector的新接口
    2. Vector线程安全,ArrayList重速度轻安全
    3. 长度需要增长时,Vector默认增长一倍,ArrayList增长50%(1.5+1)

HashMap和Hashtable的联系和区别

  • 实现原理相同,功能相同,底层都是哈希表结构,查询速度块,多数时候可以互用。

  • 区别:

    1. Hashtable是早期的JDK接口,HashMap是新版的JDK提供的接口
    2. Hashtable继承Dictionary类,HashMap实现Map接口
    3. Hashtable线程安全,HashMap线程非安全
    4. HashMap中key和value都可以为空,Hashtable不允许为空