Java集合框架(三)Queue

Queue

    Java中Queue的类图:


1.Queue介绍

        Queue,java中模拟队列的一种数据结构,先进先出(FIFO),不支持随机访问数据,通过offer()方法增加数据到队列尾部,poll()获取队列头部元素,可以将Queue看成一个通道,最先走进的通道的也是最先走出通道的,最后走进去的,在通道里面呆的时间最久。

        

2.Queue主要实现

    Queue中的主要实现有PriorityQueue和LinkedList. PriorityQueue目前还没有接触过,等到用到的时候再来补充,我们这里主要介绍下LinkedList,这是一个功能强大的集合。

    LinkedList同时实现list和Deque接口,所以它也同时具有了list和queue的特点,它既有索引,是一个list,同时也是一个双向队列,所有它的操作方式也比较多样,list和queue的都可以用,我们用代码看下具体用法:

package com.ljw.ColleactionAndMap;

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Queue;

/**
 * Created by liujiawei on 2018/6/29.
 */
public class TestLinkedList {
    public static void main(String[] args) {
        List a = new LinkedList();
        Queue q = new LinkedList();
        LinkedList linkedList = new LinkedList();


        linkedList.add(0,"jack");
        linkedList.add(1,"tom");


        System.out.println(linkedList);

        //双向链表 直接操作头尾元素
        linkedList.addFirst("jerry");
        System.out.println(linkedList);
        linkedList.addLast("pony");
        System.out.println(linkedList);

        System.out.println("栈顶元素" + linkedList.peek());
        System.out.println("栈顶元素" + linkedList.peekFirst());
        System.out.println("栈底元素" + linkedList.peekLast());

        linkedList.offer("tony");

        System.out.println(linkedList.pop());


        ListIterator listIterator = linkedList.listIterator();
        while(listIterator.hasNext()){
            System.out.println(listIterator.next());
        }


    }

}

运行结果:


    queue是不支持随机访问数据的,但是linkedlist因为可以当成list使用,所以他支持随机访问,也可以使用队列中操作头尾的方法,如peekFirst(),offer(),poll()等,同时还可以使用栈的一些方法,如pop()等,是一个功能强大的集合类。

    Linkedlist优缺点:
优点:
(1)内部使用链表实现,执行插入、删除操作很快;
(2)功能强大,list,queue和stack的方法都可以使用;
缺点:

(1)随机访问数据方面不如内部是用数组实现的arraylist和vector。


3.ArrayList,Vector,LinkedList比较

(1)如果需要遍历集合,ArrayList和Vector通过随机访问的方式比较好,LinkedList通过迭代器的方式比较好;(2)需要经常执行插入、删除操作时,使用LinkedList比较好,因为他用链表实现,ArrayList和Vector内部会扩容动态分配大小,耗费时间;

(3)需要线程安全,考虑使用Vector。


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值