《Java集合汇》

集合在我们项目开发过程中用的到很多地方,今天我就把我个人所理解的集合跟大家分享一下。

一,Iterable,Collection,List,Set,Queue的关系:

      1,List,Set,Queue都继承着java.util.Collection接口,而Collection继承的Iterable接口,这两种接口都会提供一个remove方法,他们的区别主要有两个方面:1,性能方面:Collection采用的是单链表结构查询,单链表结构查询效率比较低,需要去一个一个的去遍历才能找到对象,如果结合Iterator的remove方法结合next()方法使用比如集合中每隔一项删除一项Iterator的remove()效率更高。2,容错方面:在Iterator遍历时使用Collection的remove会报错,因为集合中对象的 个数会改变而Iterator内部对象个数不会变,反之不会报错。

二,Array与ArrayList的区别如下:

1,arraylist是array的复杂版本。

2,存取的数据类型:array只能存储相同数据类型的数据,而arraylist可以存储不同数据类型的数据。

3,长度的可变:array的长度是固定的,而arraylist的长度是可变的。

三,HashSet,TreeSet,LinkedHashSet的使用场合如下:

1,需要速度快的集合,使用HashSet

2,需要集合有排序的,使用TreeSet

3,需要按照插入的顺序存储集合,使用LinkedHashSet

四,HashMap,TreeMap,LinkedHashMap使用场合如下:

1,在Map中插入,删除和定位元素HashMap是最好的选择

2,需要集合有排序,使用TreeMap更好

3,需要按照插入的顺序存储集合,使用LinkedHashMap

五,HashMap和HashSet的区别

《Java集合汇》

六,HashMap的实现原理:

通过put和get存储和获取对象,存储对象时,我们将K/V传给put方法时,它调用hashcode计算hash从而得到bucket位置,进一步存储,HashMap会根据当前bucket的占用情况自动调整容量。获取对象时,我们将K传递给get,他调用hashcode计算hash从而得到bucket位置,并进一步调用equals()方法确认键值对。

七,List,Set,Map之间的区别

List和Set都继承Collection,但是Map不是Collection的子接口。

《Java集合汇》

八,Queue接口

如图所示:《Java集合汇》

注:下面是一张思维导图认识一下集合的框架构成,方便理解和记忆,以便加深印象

《Java集合汇》