ArrayList 源码分析
ArrayList 内部采用数组实现,是一种顺序存储方式,对于它的用法,相信大家都烂熟于心了,但是对它内部数组空间的动态管理,也许还不是很熟悉,所以我这次打算分析一下 ArrayList 的源码,基于 JDK 1.8 的版本。
ArrayList 内部采用数组实现,是一种顺序存储方式,对于它的用法,相信大家都烂熟于心了,但是对它内部数组空间的动态管理,也许还不是很熟悉,所以我这次打算分析一下 ArrayList 的源码,基于 JDK 1.8 的版本。
最近听了这么一段话,说武侠小说里少林寺的和尚们,在入寺时,并不会被授予易筋经、降龙十八掌等武功秘籍,而是给一个菜园,挑水,植菜,养猪,为什么呢?武功有招式和心法之分,招式建立与心法之上,内功深厚,招式才游刃有余。如今的 Android,iOS,Web 开发,说白了就是招式,招式可以千变外化,如果一味的追求招式,忽视内功的话,结果就像天龙八部里的鸠摩智,技术领略的内功修炼,数据结构和算法是很重要的一部分,所以我打算写几篇博客理一下数据结构。
选择排序,即选一个数,与其余的数一一比较,将小的数放在最前面,这样一次一次比较的过程中,逐步将最小的排到最前面。完整的代码可以到我的 GitHub 上查看 Algorithm。
冒泡,即像气泡一样一层一层往上冒,冒泡排序就是相邻两个数比较,大的数往后移,这样一次一次往后移的过程中,逐步将最大的排到右边,形成一个有序的数组。完整的代码可以到我的 GitHub 上查看 Algorithm。
途虎的车载 Android 项目 算是告一段落了,月底发完最后一个版本,就不会再去维护了,我们车载安卓组也算是完成了使命,后面的车载项目基本都是 H5 实现的界面和用户交互,前几天上面宣布车载团队解散,大家都在内部进行转岗,我加入了途虎 Web 前端项目小组,即将开始另一段的旅程。
本文参考自 How I save 5h/week on Gradle builds,由于在项目中经常碰到 Gradle build 很久的情况,所以这里把 Gradle 能优化的地方列了出来,请对照修改。