-----------------------------------------------------------------------------
Stack类 栈 ;继承 Vector
1.java.util包
2.构造方法 只有一个无参数的
3.除了继承自Vector类的方法外还有几个特殊的方法
push()将某一个元素压入栈顶(同add())
E=pop()将某一个元素从栈顶取出并删掉(E=remove())
E=peek()查看栈顶的一个元素 不删除(get());
boolean = empty()判断栈内元素是否为空(isEmpty());
int=search() 查找给定的元素在栈中的位置(indexOf())
4.使用场景 中国象棋 悔棋
栈中存储每一次操作的步骤
撤销
--------------------------------------------------------------------------------------------------------------------
Queue接口
1.java.util 通常使用子类 LinkedList ArrayDeque
2.通常无参数构造方法创建
3.一般方法
boolean = offer(E e) (类似add())
element() (类似get())
remove()
E=poll(); (相当于remove())
E=peek(); (相当于element方法)
4.使用场景 双11秒杀
所有进入秒杀系统的人存入队列
-------------------------------------------------------------------------------------------------------------------
LinkedList类
是List的子类 是Queue的子类
1.java.util包 (类似于之前我们封装过的双向链表)
2.底层使用双向链表的数据结构形式来存储
适合于插入或删除 不适合遍历轮询
3.构建对象
无参数构造方法 带参数的构造方法(collection)
4.常用的方法
增删改查 add() remove() set() get() size() offer poll peek
addAll() addFist() addLast() clear() contains() element()
getFirst() getLast()
import java.util.*; public class Test0521{ public static void main(String[] args){ ArrayList<String> a=new ArrayList<String>(); for(int i=1;i<=100000;i++){ //a.add("a");//追加7ms a.add(0,"a");//插入元素 //1150ms //扩容并搬元素到新数组 } long time1=System.currentTimeMillis(); //for(String v:a){ //}//取元素 3ms for(int i=0;i<100000;i++);{ a.remove(0); }//1ms long time2=System.currentTimeMillis(); System.out.println(time2-time1); /* LinkedList<String> b=new LinkedList<String>(); for(int i=1;i<=100000;i++){ //b.addLast("a");//6ms b.addFirst("a");//6ms } long time1=System.currentTimeMillis(); for(int i=0;i<b.size();i++){ b.get(i);//4323ms } for(String v:b){ }//5ms for(int i=0;i<b.size();i++){ b.remove(0);//3ms } long time2=System.currentTimeMillis(); System.out.println(time2 - time1); */ } }