如何实现随机访问?
第一是线性表(Linear List)第二个是连续的内存空间和相同类型的数据
优势:“随机访问”。
劣势:要想在数组中删除、插入一个数据,为了保证连续性,就需要做大量的数据搬移工作。
容器(ArrayList)能否完全替代数组?
优势就是可以将很多数组操作的细节封装起来、支持动态扩容。
因为扩容操作涉及内存申请和数据搬移,是比较耗时的,最好在创建ArrayList的时候事先指定数据大小。
总结:
1.Java ArrayList无法存储基本类型,比如int、long,需要封装为Integer、Long类,而Autoboxing、Unboxing则有一定的性能消耗,所以如果特别关注性能,或者希望使用基本类型,就可以选用数组。
2.如果数据大小事先已知,并且对数据的操作非常简单,用不到ArrayList提供的大部分方法,也可以直接使用数组。
3.还有一个是我个人的喜好,当要表示多维数组时,用数组往往会更加直观。比如Object[][] array;而用容器的话则需要这样定义:ArrayList<ArrayList > array。
对于业务开发,直接使用容器就足够了,省时省力。毕竟损耗一丢丢性能,完全不会影响到系统整体的性能。但如果你是做一些非常底层的开发,比如开发网络框架,性能的优化需要做到极致,这个时候数组就会优于容器,成为首选。