Java集合常见问题汇总

集合是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:先进先出

Java集合常见问题汇总_第1张图片

##比较一下collection接口的remove()方法和Iterator接口的remove()方法区别:

性能方面:

①collection的remove方法采用单链表结构查询,效率低(需要从集合中一个一个遍历才能找到对象)

②iterator的remove方法结合next()方法使用,效率高

容错方面:

在使用itrator遍历时,使用collection的remove会报错,而iterator不会报错

3.写法上面:

  1. 一个有参一个无参

##、Array和ArrayList的区别

①.ArrayList是Array的复杂版本

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

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

二、Arrays和Map集合

  1. Arrays:
  2. Map:

①HashMap:无序、访问快

②TreeMap:有序(升序)

③LinkedMap:有序(添加顺序)、有HashMap的保存速度

##HashMap和HashSet区别

Java集合常见问题汇总_第2张图片

##、ArrayList和LinkedList的区别

ArrayList:查询速度快

LinkedList:增加删除速度快

##、HashSet、TreeSet、LinkedList区别

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

②.需要集合有排序功能,使用TreeSet

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

##HashMap的实现原理

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

16*0.75=12

16是默认容量值,0.75是扩容因子

##List、Set、Map之间的区别

Java集合常见问题汇总_第3张图片

注:不够理解可以看下图,更加直接明了

Java集合常见问题汇总_第4张图片

最后的最后:写文章不容易啊,亲若是喜欢或者对你有帮助记得点赞、+关注或者收藏呦~就酱,啾咪~

 

你可能感兴趣的:(#,后端,Java,java)