java8 LinkedList接口实现源码解析

一、类继承关系

二、接口说明

1、Queue接口

 Queue接口继承自Collection接口,表示一个先进先出队列,所有的新元素都插入到队尾,从队首获取元素。Queue接口有6个核心方法,两两成对,add和offer表示添加元素到队尾,remove和poll是移除并返回队首的元素,element和peek方法时返回队首的元素但不移除,前者操作失败时如队列已满添加失败或者队列为空移除获取队首元素失败会抛出异常,后者不会,会返回null或者false。正是因为Queue接口返回null表示队列为空所以不允许插入null的元素,即使实现类支持插入null元素。增加的方法如下:

测试用例如下:

   @Test
    public void test() throws Exception {
        Queue<String> queue=new LinkedList<>();
        queue.add("test");
        queue.add("test2");
        queue.add("test3");
        queue.add("test4");
        queue.add("test5");
        //offer添加失败,比如固定长度队列下队列已满,会抛出异常
        queue.offer("test6");
        queue.offer("test7");
        queue.offer("test8");
        queue.offer("test9");
        queue.offer("test10");
        int size=queue.size();
        System.out.println(size);
        for(int i=0;i<size+1;i++){
            //element()和peek()方法都是返回队列头部的元素,队列为空时peek返回null,element()会抛出异常NoSuchElementException
            System.out.println("peek:"+queue.peek());
//            System.out.println("element:"+queue.element());
            //poll()和remove()都是移除并返回头部的元素,队列为空时poll()返回null,remove()抛出异常NoSuchElementException
//            System.out.println("poll:"+queue.poll());
            System.out.println("remove:"+queue.remove());

        }

    }

2、Deque接口

Deque接口表示一个双端队列,即同时支持在队列的两端执行元素插入或者删除操作,可以当做是先进先出FIFO队列Queue使用,也可以当做后进先出LIFO队列Stack使用。同Queue,操作队列两端元素的方法都有两种形式,一种是操作失败抛出异常,一种是返回null或者false,且都不支持插入null元素。其增加的方法如下:

 各方法的关系如下:

 测试用例如下:


    @Test
    public void test2() throws Exception {
        Deque<String> deque=new LinkedList<>();
        //add()同addLast()是等价的
        deque.add("test");
        deque.add("test2");
        deque.add("test3");
        deque.addLast("test4");
        deque.addLast("test5");
        //offer()和offerLast()是等价的
        deque.offer("test6");
        deque.offer("test7");
        deque.offerLast("test8");
        deque.offerLast("test9");
        deque.offerLast("test10");
        int size=deque.size();
        System.out.println(size);
        for(int i=0;i<size+1;i++){
            //peek()和peekFirst()是等价的
            System.out.println("peek:"+deque.peek());
            System.out.println("peekFirst:"+deque.peekFirst());
            //element()和getFirst()是等价的
            System.out.println("element:"+deque.element());
            System.out.println("getFirst:"+deque.getFirst());
            //poll()和pollFirst()是等价的
//            System.out.println("poll:"+queue.poll());
            System.out.println("poll:"+deque.pollFirst());
            //remove和removeFirst()是等价的
//            System.out.println("remove:"+deque.remove());
//            System.out.println("removeFirst:"+deque.removeFirst());
        }

    }

    @Test
    public void test3() throws Exception {
        Deque<String> deque=new LinkedList<>();
        //往尾部插入
        deque.add("test");
        deque.add("test2");
        deque.add("test3");
        deque.addLast("test4&#
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值