至此,回头一看,你是否会感到疑惑,``Stack里面没有任何的数据,但是却不断的在操作数据,这得益于Vector`的数据结构:
// 底层数组 protected Object[] elementData; // 元素数量 protected int elementCount;底层使用数组,保存了元素的个数,那么操作元素其实只是不断往数组中插入元素,或者取出最后一个元素即可。
总结stack 由于继承了Vector,因此也是线程安全的,底层是使用数组保存数据,大多数API都是使用Vector来保存。它最重要的属性是先进先出。至于数组扩容,沿用了Vector中的扩容逻辑。
如果让我们自己实现,底层不一定使用数组,使用链表也是能实现相同的功能的,只是在整个集合源码体系中,共有相同的部分,是不错的选择。