ArrayList相关
源码
解析转载自(已经很详细):http://blog.csdn.net/u010887744/article/details/49496093
ArrayList常见的面试题转载自:https://www.cnb
logs.com/softidea/p/6410680.html
总结:
ArrayList是基于动态数组进行实现的。适合做查询,因为存在下标,不适合做增加和删除,因为会进行数组的复制,然后调用System.arrayCopy( )方法,特别消耗资源。
因此:对数据做查询操作多于增加和
caozuo.html" target="_blank">删除操作时,ArrayList比较适合。
question1:是如何基于动态数组的?
ArrayList的add操作首先会对数组进行检查,判断数组中的数+1是否大于其默认值10,若不大于则不进行扩容操作,若大于10,则会进行+1的扩容操作,然后底层调用System.arrayCopy( )将原数据复制到新数据进行扩容。
remove操作会将数据中的-1,容量大于10,会进行缩容操作,调用trimToSize( )恢复到10,容易=10,不会进行此操作。
注:System.arrayCopy( )会特别的消耗资源,因此ArrayList不适合做增加和删除操作。