今天学习了第一阶段的“数组”,我的收获有:
文章题目抛出的标题是一个很有意思的问题,很多人可能都不会去想数组为什么
从下标0开始。数组作为我们平时工作中最常用的的数据结构,也是最基本的数据类型
,确实应该了解的透彻一些。
从以下4个方面理解数组:
1.数组如何实现随机访问
数组支持随机访问,根据下标随机访问的时间复杂度为 O(1)
2.低效的“插入”和“删除”
数组为了保持内存数据的连续性,会导致插入、删除这两个操作比较低效
JVM 标记清除垃圾回收算,先标记,再一起删除,这样就大大减少了删除操作导致的数据搬移。
3.数组的访问越界问题
数组越界在平时工作中偶尔也会遇到,那就是没有判断越界情况,JAVA中数组越界的异常是java.lang.ArrayIndexOutOfBoundsException
4.容器能否完全替代数组
工作中用到ArryList多一些,那数组什么时候用,容器什么时候用好一些。
ArrayList的优势:
1.以将很多数组操作的细节封装起来,比如增加、删除。
2.动态扩容
注意:在创建 ArrayList 的时候事先指定数据大小。
数组的优势:
1.关注性能的代码,用基本数据类型,因为Java ArrayList 无法存储基本类型。
拆箱、装箱有性能消耗。
2.预先知道数据大小,而且对数据操作很简单。
3.表达多维数组的时候,用数组更直观,比如 Object[][] array
本文由【极客时间】专栏《数据结构与算法之美》学习得来。
网友评论