集合是java中很常用的一个技术,今天我就来记录一下有关集合的一些常见问题汇总,如有不足之处,大家可以一起来讨论一下。
首先,大家都知道collection它继承自Iterable,而实现Iterable接口的类可以拥有增强for循环的功能,实现Iterable的集合类必须提供一个名为iterable()的方法,该方法的返回值为Iterable;
Iterable方法一些属性:hasNext():是否存在下一项 next():获取下一项 remove():删除由next()最新返回的项;
一、继承Collection的List、Set和Queue:
1.List:
特点:有序、可以添加重复的元素
①ArrayList:查询速度快
②LinkedList:增加删除速度快
2.Set:
特点:不重复、无序
①HashSet:
速度最快、无序、集合元素可以为null(只能放入一个null)
②TreeSet:有序(升序)
③LinkedList:有序(按照添加的顺序)
3.Queue:先进先出
##比较一下collection接口的remove()方法和Iterator接口的remove()方法区别:
性能方面:
①collection的remove方法采用单链表结构查询,效率低(需要从集合中一个一个遍历才能找到对象)
②iterator的remove方法结合next()方法使用,效率高
容错方面:
在使用itrator遍历时,使用collection的remove会报错,而iterator不会报错
3.写法上面:
- 一个有参一个无参
##、Array和ArrayList的区别
①.ArrayList是Array的复杂版本
②.存储的数据类型:Array只能存储相同数据类型的数据,而ArrayList可以存储不同数据类型的数据
③.长度的可变:Array的长度是固定的,而ArrayList的长度是可变的
二、Arrays和Map集合
- Arrays:
- Map:
①HashMap:无序、访问快
②TreeMap:有序(升序)
③LinkedMap:有序(添加顺序)、有HashMap的保存速度
##HashMap和HashSet区别
##、ArrayList和LinkedList的区别
ArrayList:查询速度快
LinkedList:增加删除速度快
##、HashSet、TreeSet、LinkedList区别
①.需要按照插入的顺序存储集合,使用LinkedHashSet
②.需要集合有排序功能,使用TreeSet
③.需要速度快的集合,使用HashSet
##HashMap的实现原理
HashMap会根据当前bucket的占用情况自动调整容量
16*0.75=12
16是默认容量值,0.75是扩容因子
##List、Set、Map之间的区别
注:不够理解可以看下图,更加直接明了
最后的最后:写文章不容易啊,亲若是喜欢或者对你有帮助记得点赞、+关注或者收藏呦~就酱,啾咪~