Java中使用LinkedList实现Queue

LinkedList提供了方法支持队列的行为,并且它实现了Queue接口,因此LinkedList可以用作Queue的一种实现。

package cn.usst.queue.demo;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Random;
/*
 * Queue的基本使用
 */
public class QueueDemo {
	public static void main(String[] args) {
		Queue<Integer> queue = new LinkedList<Integer>();
		Random random = new Random(47);
		for(int i=0; i<10; i++){
			queue.offer(random.nextInt(i+10));
		}
		printQ(queue);

		Queue<Character> qc = new LinkedList<Character>();
		for(char c : "Brontosaurus".toCharArray()){
			qc.offer(c);
		}
		printQ(qc);
	}

	private static void printQ(Queue queue) {
		while(queue.peek() !=null ){
			System.out.println(queue.remove() + " ");
		}
		System.out.println();
	}
}

/*
 * Offer()将一个元素插入到队尾
 * peek()和element()都是在移除的情况下返回队头
 *     peek()方法在队列为空时返回null,element()会抛出NoSuchElementException异常
 * poll()和remove()方法将移除并返回队头
 * 	   poll()在队列为空时返回null,而remove()会抛出NoSuchElementException异常
 */

PriorityQueue:优先队列的实现

package cn.usst.queue.demo;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Random;

public class PriorityQueueDemo {
	public static void main(String[] args) {
		PriorityQueue<Integer> priorityQueue = new PriorityQueue<Integer>();
		Random rand = new Random();
		for(int i=0; i<10; i++){
			priorityQueue.offer(rand.nextInt(i+10));
		}
		printQ(priorityQueue);

		List<Integer> ints = Arrays.asList(25, 22, 20, 18, 14, 9, 8, 2, 4, 7);
		priorityQueue = new PriorityQueue<Integer>(ints);
		printQ(priorityQueue);

		//反向输出
		priorityQueue = new PriorityQueue<Integer>(ints.size(), Collections.reverseOrder());
		priorityQueue.addAll(ints);
		printQ(priorityQueue);
	}

	private static void printQ(Queue queue) {
		while(queue.peek() !=null ){
			System.out.println(queue.remove() + " ");
		}
		System.out.println();
	}
}
时间: 2024-10-25 20:56:47

Java中使用LinkedList实现Queue的相关文章

Java中的linkedList

Java中的LinkedList实际上是双向链表实现方式 LinkedList<String> list = new LinkedList<String>(); list.add(1); list.add(2) 1->2 这说明默认的add方式是在list的尾部添加了一个元素 list.addLast(3); 1->2->3 list.addFirst(0); 0->1->2->3 list.removeLast(); 0->1->2

Java中的队列API——Queue

队列具有FIFO(先进先出)的功能,那么如何实现这一功能呢,呵呵呵,Java已经为我们提供了API--Queue,下面通过一个例子来认识一下该API: import java.util.Queue; import java.util.LinkedList; public class TestQueue { public static void main(String[] args) { Queue<String> queue = new LinkedList<String>();

JDK学习---深入理解java中的LinkedList

本文参考资料: 1.<大话数据结构> 2.http://blog.csdn.net/jzhf2012/article/details/8540543 3.http://blog.csdn.net/jzhf2012/article/details/8540410 4.http://www.cnblogs.com/ITtangtang/p/3948610.html 5.http://blog.csdn.net/zw0283/article/details/51132161 本来在分析完HashSe

java中的LinkedList,回顾一下

LinkedList重写类LinkList.java: import java.util.LinkedList;import java.util.List; public class LinkList {      private static LinkedList <LinkListInfo> linklist = new LinkedList<LinkListInfo>();        public static void addToList(LinkListInfo di

Java中的queue和deque

队列(queue)是一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则.Java中,LinkedList实现了Queue接口,因为LinkedList进行插入.删除操作效率较高 相关常用方法: boolean offer(E e):将元素追加到队列末尾,若添加成功则返回true. E poll():从队首删除并返回该元素. E peek():返回队首元素,但是不删除 示例代码: public class QueueDemo { public static void m

java中队列Queue的使用

1.在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.Queue接口与List.Set同一级别,都是继承了Collection接口.Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素.它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常. 如果要使用前端而不移出该元素,使用element()或者peek()方法. 2.值得注

java 中的JDK封装的数据结构和算法解析(集合类)----链表 List 之 LinkedList

List 只要有两个实现类(ArrayList 和linkedList ),ArryList是基于数组实现,LinkedList是基于链表实现,下面是小弟对LinkedList的一点理解: LinkedList :基于链表实现的集合        双链接列表实现{ @code  List}和{ @code   Deque} 接口.实现了所有可选列表操作,和许可元素(including{ @code  null}). 首先对实现的接口分析一下: Deque  (双端队列): 这种队列允许在队列头和

java中Queue接口

Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Queue接 口.Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用.BlockingQueue 继承了Queue接口. 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(re

java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码

代码下载地址:http://www.zuidaima.com/share/1838230785625088.htm 原文:java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码 最近由于zuidaima.com注册用户的增多,qq企业邮箱发送邮件会被封禁账号导致注册后面的用户收不到周总结,所以紧急开发了一套多账号,多服务器发送邮件的程序. 大概的设计思路如下: 1.服务器可以无限扩展,但由于qq企业邮箱是限定域名,所以要想多服务器还得有多域名,多账号也不行. 2.最