java集合【13】——— Stack源码分析走一波 (2)

至此,回头一看,你是否会感到疑惑,``Stack里面没有任何的数据,但是却不断的在操作数据,这得益于Vector`的数据结构:

// 底层数组 protected Object[] elementData; // 元素数量 protected int elementCount;

底层使用数组,保存了元素的个数,那么操作元素其实只是不断往数组中插入元素,或者取出最后一个元素即可。

java集合【13】——— Stack源码分析走一波

总结

stack 由于继承了Vector,因此也是线程安全的,底层是使用数组保存数据,大多数API都是使用Vector来保存。它最重要的属性是先进先出。至于数组扩容,沿用了Vector中的扩容逻辑。

如果让我们自己实现,底层不一定使用数组,使用链表也是能实现相同的功能的,只是在整个集合源码体系中,共有相同的部分,是不错的选择。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdggz.html