java-集合(4)-用LinkedList来实现栈/队列-ArrayList和LinkedList比较

1:栈(Stack)也是一种特殊的线性表,是一种后进先出(LIFO)的结构。
2:栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top)表头称为栈底(bottom)。
这里写图片描述

package stack;

import java.util.LinkedList;

class stack {
    public static LinkedList<Object> ll = new LinkedList<Object>();
    //入栈
    public void push(Object o) {
        ll.add(o);
    }
    //出栈
    public Object pop() {
        return ll.remove();
    }
    //查看栈顶元素
    public Object peek() {
        return ll.getFirst();
    }
    //判断栈是否为空
    public boolean isEmpty(){
        return ll.isEmpty();
    }
    public static void main(String args[]) {
        stack s = new stack();
        s.push("1");
        s.push("2");
        s.push("3");
        s.pop();
        System.out.println(s.peek());
        System.out.println(s.peek());
        s.pop();
        s.pop();
        System.out.println(s.isEmpty());
    }
}
2
2
true

队列(Queue)是限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。
表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。按先进先出(FIFO)的原则进行的。
这里写图片描述

package queue;

import java.util.LinkedList;

class Queue {
    LinkedList<Object> ll = new LinkedList<Object>();

    // 入队
    public void push(Object o) {
        ll.addLast(o);
    }

    // 出队
    public Object pop() {
        return ll.removeFirst();
    }

    public Object peek() {
        return ll.getFirst();
    }

    public boolean isEmpty() {
        return ll.isEmpty();
    }

    public static void main(String args[]) {
        Queue q = new Queue();
        q.push("xiaoxi");
        q.push("xiaozhu");
        q.push("xiaohong");
        q.pop();
        System.out.println(q.peek());
        System.out.println(q.isEmpty());

    }
}
xiaozhu
false

这里写图片描述
1:ArrayList底层采用数组完成,而LinkedList则是以一般的双向链表(double-linked list)完成,其内每个对象除了数据本身外,还有两个 引用,分别指向前一个元素和后一个元素。

2:如果我们经常在List的开始处增加元素,或者在List中进行插入和删除操作,我们应该使用LinkedList,否则的话,使用ArrayList将更加快速。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值