1.1Vector
Interface Enumeration<E>是接口
1.Vector与ArrayList相似,操作几乎一样,但是Vector是同步的。所以说Vector是使用数组实现的线程安全的列表;
2.Vector在进行默认规则扩容时,新数组的长度=原始数组长度*2,也可以指定扩容长度;
3.创建对象的时候初始化长度为1
1.1.2
案例:
package List;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
public class VectorTest {
public static void main(String[] args) {
Vector<String> vector=new Vector<>();
vector.add("jack");
vector.add("jim");
vector.add("luck");
vector.add("jack");
// //获取Enumeration接口对象 Enumerationn接口中定义了一些方法
// 通过这些方法可以枚举(一次获得一个)对象集合中的元素。
// 这种传统接口已被迭代器取代
// Enumeration <String> elements=vector.elements();
// while(elements.hasMoreElements()){
// String s=elements.nextElement();
// System.out.println(s);
Iterator iterator=vector.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
}
}
说出ArrayList与Vector的区别?
相同点:ArrayList与Vector的底层都是由数组实现的。
不同点:1、ArrayList不同步,线程相对不安全,效率相对高;Vector同步的,线程相对安全,效率相对较低。
2、ArrayList是JDK1.2出现的。Vector是jdk1.0的时候出现的。
3、扩容方式:
ArrayList扩容方式:原来数组长度1.5倍 Vector扩容方式: 默认是原来数组长度的2倍
4、实现方法不同//这个不确定
1.2Stack
1.Stack继承自Vector,实现一个后进先出的堆栈
2.Stack提供5个额外的方法使得Vector得以被当作堆栈使用。
基本的push和pop 方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置
3.Stack刚创建后是空栈
package List;
import java.util.Iterator;
import java.util.Stack;
public class StackTest {
public static void main(String[] args) {
Stack<Integer> stack=new Stack<>();
stack.add(2);
//入栈
stack.push(4);
stack.push(10);
System.out.println("---------stack.peek");
//获取栈顶
Integer stackUpElement=stack.peek();
System.out.println(stackUpElement);
//遍历栈
Iterator<Integer> iterator=stack.iterator();
while(iterator.hasNext()){
Integer next=iterator.next();
System.out.println(next);
}
Integer pop=stack.pop();
System.out.println("===============弹出的栈顶");
System.out.println(pop);
System.out.println("===============stack.pop");
//出栈,stack中少一个元素
Iterator<Integer> iterator1=stack.iterator();
while(iterator1.hasNext()){
Integer next=iterator1.next();
System.out.println(next);
}
}
}
1.3Queue
1.队列是一种先进先出的数据结构,元素在队列末尾添加,在队列头部删除。Queue接口扩展自Collection,并提供插入、提取、检验等操作
2.接口Deque,是一个扩展自Queue的双端队列,它支持在两端插入和删除元素,因为LinkedList类实现了Deque接口,所以通常我们可以使用LinkedList来创建一个队列。PriorityQueue类实现了一个优先队列,优先队列中元素被赋予优先级,拥有高优先级的先被删除
package List;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Queue;
public class QueueTest {
public static void main(String[] args) {
// Deque extends Queue LinkedList实现Deque接口
Queue <String> queue=new LinkedList<>();
queue.offer("jack");//入队
queue.offer("jim");//入队
queue.offer("luck");//入队
//查看对头元素,并不删除对头元素
System.out.println("queue.element():"+ queue.element());
System.out.println("queue.element():"+ queue.element());
//查看对头元素,并不删除对头元素
System.out.println("queue.peek():"+queue.peek());
System.out.println("queue.peek():"+queue.peek());
//poll 消除对头元素,返回消除的对头元素
System.out.println("queue.p):"+queue.poll());
//peek 查看
System.out.println("queue.p):"+queue.peek());
//remove 删除对头元素,返回删除的对头元素
System.out.println("queue.remove):"+queue.remove());
//peek 查看
System.out.println("queue.p):"+queue.peek());
System.out.println("queue.size):"+queue.size());
}
}