JAVA基础(26) java.util.Queue的简单用法

队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。

进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

在队列这种数据结构中,最先插入的元素将是最先被删除的元素;

反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。

在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。

Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。

它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,

使用element()或者peek()方法。值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

二、示例

package com.test.util.queue;

import java.util.LinkedList;
import java.util.Queue;

/**
 * java 队列测试
 * java.util.Queue用法
 * @author zengdq
 * @date 2016年4月20日
 */
public class testQueue {
	public static void main(String[] args) {
		// add()和remove()方法在失败的时候会抛出NoSuchElementException异常(不推荐);而offer方法会返回false。
		Queue<String> queue = new LinkedList<String>();
		// 添加元素
		queue.offer("第一列");
		queue.offer("第二列");
		queue.offer("第三列");
		queue.offer("第四列");
		queue.offer("第五列");
		//
		if(queue != null && queue.size() > 0){
			for (String q : queue) {
				System.out.println("初始值q1="+q);
			}
			System.out.println("poll=" + queue.poll()); // 返回第一个元素,并在队列中删除
			System.out.println("//1//");
			
			for (String q : queue) {
				System.out.println("当前值q2="+q);
			}
			System.out.println("element=" + queue.element()); // 返回第一个元素
			System.out.println("///2/");
			
			for (String q : queue) {
				System.out.println("当前值q3="+q);
			}
			System.out.println("peek=" + queue.peek()); // 返回第一个元素
			System.out.println("//3//");
			
			for (String q : queue) {
				System.out.println("当前值q4="+q);
			}
		}

	}

}


三、结果显示

初始值q1=第一列
初始值q1=第二列
初始值q1=第三列
初始值q1=第四列
初始值q1=第五列
poll=第一列
//1//
当前值q2=第二列
当前值q2=第三列
当前值q2=第四列
当前值q2=第五列
element=第二列
///2/
当前值q3=第二列
当前值q3=第三列
当前值q3=第四列
当前值q3=第五列
peek=第二列
//3//
当前值q4=第二列
当前值q4=第三列
当前值q4=第四列
当前值q4=第五列




ERROR: Launching agent process aborted. Also: java.lang.Throwable: launched here at hudson.slaves.SlaveComputer._connect(SlaveComputer.java:287) at hudson.model.Computer.connect(Computer.java:447) at hudson.slaves.SlaveComputer.tryReconnect(SlaveComputer.java:854) at hudson.slaves.RetentionStrategy$Always.check(RetentionStrategy.java:173) at hudson.slaves.RetentionStrategy$Always.check(RetentionStrategy.java:161) at hudson.slaves.ComputerRetentionWork$1.run(ComputerRetentionWork.java:71) at hudson.model.Queue._withLock(Queue.java:1397) at hudson.model.Queue.withLock(Queue.java:1271) at hudson.slaves.ComputerRetentionWork.doRun(ComputerRetentionWork.java:62) at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:92) at jenkins.security.ImpersonatingScheduledExecutorService$1.run(ImpersonatingScheduledExecutorService.java:67) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) java.lang.InterruptedException: Validate configuration: The Host must be specified The selected credentials cannot be found at hudson.plugins.sshslaves.SSHLauncher.checkConfig(SSHLauncher.java:925) at hudson.plugins.sshslaves.SSHLauncher.launch(SSHLauncher.java:411) at hudson.slaves.SlaveComputer.lambda$_connect$0(SlaveComputer.java:298) at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46) at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:80) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)
最新发布
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值