1、vector
vector是最原始的数组 本质是动态数组
Vector<Integer > v1 = new Vector<>() ;不带参数的构造函数 容量和增量默认为10 容量指数组的最大存储量 增量指当元素个数超过当前 Vector的容量时, Vector会自动再增加10的内存空间 达到动态扩容的目的 但是如果只是在当前容量等于元素个数时再增加一个元素时就会浪费9个内存空间 所以会出现带参数的 Vector数组
Vector<Integer > v1 = new Vector<>(5,2) ;则这个v1对象的最小容量为5 当容量不够时会自动增加两个单位内存空间
主要的方法有:
2、Stack
Stack是栈 其特点是先进后出 在生活中比较形象的例子的是洗碗,先洗好的碗放在最底下用的时候得从最上面的拿起
主要的操作是添加元素至栈顶 取栈顶元素 删除栈顶元素 要取底下的元素要依次将栈顶的元素删除后才能将目标元素读取出来
Stack stack =new Stack ();
主要方法:
stack .push()将元素添加进栈 将新添加的元素变成栈顶元素
stack.peek()读取栈顶元素但不移除
stack.remove()删除栈顶元素
3、arrylist
arrylist是单向链表 因为链表中每一个元素都是由数据区域和指针区域所组成
其数据区域存储的是这个元素的值 指针区域存储的是下一个元素的地址
所以arrylist存指定位置的数据和删除指定位置数据只需要将指针修改便可以达到目的
常用的方法有add() remove()get() size()
4、总结
数组比如一维整型数组int[] arr; 其特点因为存储地址是一串连续的空间 所以访问数据快
而随意增加/删除某个位置的数据则麻烦 而且数组的长度在定义的时候就必须要知道长度
vector 是动态的数组 相对比上面刚提及的数组 它的长度可变 而且增加删除可以直接调用方法
stack是栈 先进后出的特点在这个类的方法里都有体现
arrlist是单向链表 通过指针可以随便指向另一个元素 可以方便的增加删除元素
对内存来说是比较友好的 虽说实际中链表访问连链表中的某个元素速度较慢 但是因为有现成的方法供我们直接使用 所以也通常不会感觉到这个缺点