1. 什么是Vector和Stack?
Vector是Java中的一个动态数组,它实现了List接口,并且可以自动扩容。Vector允许在任意位置插入、删除和访问元素。
Stack是Vector的子类,它实现了栈的数据结构。栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
Vector内部使用一个Object类型的数组来存储元素,当数组空间不足时,会创建一个更大的数组并将所有元素复制到新数组中。这个过程称为扩容。默认情况下,每次扩容会使数组的大小增加一倍。
Stack继承自Vector,所以它也使用数组来存储元素。与Vector不同的是,Stack限制了只能在栈顶进行插入和删除操作。通过继承Vector,Stack获得了Vector的所有方法,但它只暴露了栈相关的操作。
下面是一个使用Vector和Stack的简单示例:
import java.util.Vector;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
// 使用Vector存储元素
Vector<Integer> vector = new Vector<>();
vector.add(1);
vector.add(2);
vector.add(3);
System.out.println("Vector: " + vector);
// 使用Stack进行栈操作
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println("Stack: " + stack);
System.out.println("Pop element from stack: " + stack.pop());
System.out.println("Stack after pop: " + stack);
}
}
输出结果:
Vector: [1, 2, 3]
Stack: [1, 2, 3]
Pop element from stack: 3
Stack after pop: [1, 2]
Vector和Stack都是Java集合框架中的一部分,用于存储和操作可变数量的元素。Vector是一个动态数组,而Stack是Vector的子类,实现了栈的数据结构。Vector和Stack在某些场景下非常有用,但在大多数情况下,推荐使用ArrayList或LinkedList来代替它们。