我们由这张思维导图来看看我们用到的集合及其优缺点:
![](https://i-blog.csdnimg.cn/blog_migrate/ad958477ae8d5f8ea5668bbb4439f1ae.png)
我们从右边开始看,
- List、Set、Queue都继承的java.util.Collection接口,而Collection继承的Iterable接口,两种接口都有提供一个remove方法,它们的区别主要有两个方面:1、性能方面:Collection采用的是单链接结构查询,so查询效率比较低。2、容错方面:Collection遍历时会报错,为什么呢,因为集合中对象的个数会变,iterable不会。
- ArrayList和LinkedList都继承的List,特点:可以添加重复元素、有序。ArrayList查询速度较快,LinkedList增删改操作较快。一般这个的问法:ArrayList和LinkedList的区别?
- HashSet、TreeSet和LinkedHashSet都继承的Set,特点:不可以添加重复的元素,无序。HashSet速度是其中最快的,无、序。TreeSet按照比较结果的升序保存对象。LinkedHashSet按被添加的顺序保存对象。一般这个的问法:这三者之间的区别?
- Queue接口,特点:先进先出。看图理解:
![](https://i-blog.csdnimg.cn/blog_migrate/8cc5294e8f84b61fadfd527b1a647f50.png)
5.HashMap、TreeMap和LinkedHashMap都继承的Map接口,HashMap提供了最快的访问技术,没有明显的顺序保存元素,TreeMap按照比较结果升序保存键,LinkedHashMap按照插入顺序保存键且保留了HashMap的查询速度。一般问法:三者的区别?
6.HashMap和HashSet区别
![](https://i-blog.csdnimg.cn/blog_migrate/89cb7869e275ef7430f30a4117ac694f.png)
7.List、Set、Map之间的区别
![](https://i-blog.csdnimg.cn/blog_migrate/f5f238b80d375e0b2c867697073a9258.png)
说到这里我想起了一个关于ArrayList的问题,问题是这样问的:ArrayList和Vector的区别?
这个从两个方面答:(1)同步性:ArrayList线程不同步,性能好,Vector相反,但安全。
(2)数据增长:ArrayList的默认容量16增长为原来的乘3除2+1而Vector是原来的2倍