Java容器类分析之List ArrayList Vector.docx_第1页
Java容器类分析之List ArrayList Vector.docx_第2页
Java容器类分析之List ArrayList Vector.docx_第3页
Java容器类分析之List ArrayList Vector.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java容器类分析之List ArrayList VectorList是接口,声明了各个方法,不多说。且看ArrayList类。ArrayList类的成员变量有Object elementData,int size;其中elementData数组用来存储加入到ArrayList的对象,size为列表中实际的对象数目。ArrayList类不是线程安全的。Vector与ArrayList的实现基本相同,只是Vector类是线程安全的,其方法都带有synchronized关键字,如果不考虑线程同步的话,ArrayList性能要好一些。当前它们内部实现原理都是用到对象数组来实现,如果元素数目确定,直接用数组效率最高。简单的用法:(后面是数据打印结果)1. publicclassListDemo 2. 3. /* 4. *paramargs 5. */6. publicstaticvoidmain(Stringargs) 7. Listlist=newArrayList(); 8. StringstrArr=newString3; 9. booleanret=list.add(haha); 10. list.add(newString(aa); 11. list.add(null); 12. System.out.println(list.size();/3 13. System.out.println(ret);/true 14. System.out.println(list);/haha,aa,null 15. System.out.println(strArr);/Ljava.lang.String;1fee6fc 16. System.out.println(strArr.getClass().getName();/Ljava.lang.String; 17. System.out.println(list.indexOf(aa);/1 18. System.out.println(list.indexOf(null);/2 19. Stringstr=list.set(1,ee); 20. System.out.println(str);/aa 21. System.out.println(list);/haha,ee,null 22. Stringremove=list.remove(0); 23. System.out.println(remove);/haha 24. System.out.println(list);/ee,null 25. booleanresult=list.remove(ff); 26. System.out.println(result);/false 27. result=list.remove(ee); 28. System.out.println(result);/true 29. System.out.println(list);/null 30. 31. 32. 1. publicArrayList() 2. this(10); 3. 4. publicArrayList(intinitialCapacity) 5. super(); 6. if(initialCapacity0) 27. System.arraycopy(elementData,index+1,elementData,index, 28. numMoved); 29. elementData-size=null;/index后面数据依次往前移动,将最后一个位置赋值为0,让gc来回收空间。 30. returnoldValue; 31. 32. 33. publicvoidensureCapacity(intminCapacity) 34. modCount+;/这个变量不用管。 35. intoldCapacity=elementData.length;/初始时设定的数组长度 36. if(minCapacityoldCapacity)/如果数组对象数目初始数组长度,则需要扩容。 37. ObjectoldData=elementData; 38. intnewCapacity=(oldCapacity*3)/2+1;/新的容量大小 39. if(newCapacityminCapacity) 40. newCapacity=minCapacity; 41. /*该方法会创建一个新的对象数组,然后调用System.arraycopy(original,0,copy,0, 42. Math.min(original.length,newLength);方法将源数组数据拷贝到新数组中。引用更新,指向新的对象数组。*/43. elementData=Arrays.copyOf(elementData,newCapacity); 44. 45. 46. 47. /*将对象数组削减到当前元素数目大小,减少存储空间*/ 48. publicvoidtrimToSize() 49. modCount+; 50. intoldCapacity=elementData.length; 51. if(sizeoldCapacity) 52. elementData=Arrays.copyOf(elementData,size); 53. 54. 55. 56. /*查找对象首次出现的位置,若没有找到,返回-1。由 57. 代码可知,可以在list中加入null对象,并查找到。*/58. publicintindexOf(Objecto) 59. if(o=null) 60. for(inti=0;isize;i+) 61. if(elementDatai=null) 62. returni; 63. else 64. for(inti=0;i=size) 88. thrownewIndexOutOfBoundsExceptio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论