《Java集合相关知识》

我们先通过这张思维导图来理解下集合框架的构成:

1. Iterable、Collection、List、Set、Queue的关系:

    List、Set、Queue接口继承Collection接口,Collection接口继承Iterable接口。

2. Collection接口的remove()方法和Iterable接口的remove()方法的区别:

    性能方面:Collection的remove方法必须首先找出要被删的项,采用的是单链表结构, 需要一个一个遍历才能找到该对象,效                        率低; Iterator的remove方法结合next()方法使用,比如集合中每隔一项删除一项,Iterator的remove()效率更高。

    容错方面:在使用Iterator遍历时,Collection的remove会报异常,因为集合中对象的个数会改变。Iterator的remove不会报错                          因为Iterator内部对象的个数不会改变。

3. List接口的特点:可以添加重复的元素,有顺序。

4. Array和ArrayList的区别:

   ①.ArrayList是Array的复杂版本。

   ②.存储的数据类型:Array只能存储相同数据类型的数据,而ArrayList可以存储不同数据类型的数据。

   ③.长度的可变:Array的长度是固定的,而ArrayList的长度是可变的。

5. ArrayList和LinkedList的区别:

    在查询方面:ArrayList的查询速度比LinkedList快。

    在增删改方面:LinkedList的效率比ArrayList高。

6. Set接口的特点:不保存重复的元素,没有顺序。

7. HashSet、TreeSet、LinkedHashSet的区别:

    HashSet:速度快,无序。

    TreeSet:有序(排序)。

    LinkedHashSet:顺序。

8. Queue的特点:先进先出。

9. HashMap、TreeMap、LinkedHashMap的区别:

    HashMap:速度快,无序。

    TreeMap:排序。

    LinkedHashMap:顺序。

10. HashMap的实现原理:

      HashMap会根据当前bucket的占用情况自动调整容量。

      16*0.75=12 (16是默认容量值,0.75是扩容因子)

11. HashMap和HashSet的区别:

      

12. List、Set、Map之间的区别: