// validating/CircularQueue.java// (c)2017 MindView LLC: see Copyright.txt// We make no guarantees that this code is fit for any purpose.// Visit http://OnJava8.com for more book information.// Demonstration of Design by Contract (DbC)package validating;import java.util.*;public class CircularQueue {private Object[] data;private intin = 0, // Next available storage spaceout = 0; // Next gettable object// Has it wrapped around the circular queue?private boolean wrapped = false;public CircularQueue(int size) {data = new Object[size];// Must be true after construction:assert invariant();}public boolean empty() {return !wrapped && in == out;}public boolean full() {return wrapped && in == out;}public boolean isWrapped() { return wrapped; }public void put(Object item) {precondition(item != null, "put() null item");precondition(!full(),"put() into full CircularQueue");assert invariant();data[in++] = item;if(in >= data.length) {in = 0;wrapped = true;}assert invariant();}public Object get() {precondition(!empty(),"get() from empty CircularQueue");assert invariant();Object returnVal = data[out];data[out] = null;out++;if(out >= data.length) {out = 0;wrapped = false;}assert postcondition(returnVal != null,"Null item in CircularQueue");assert invariant();return returnVal;}// Design-by-contract support methods:private static voidprecondition(boolean cond, String msg) {if(!cond) throw new CircularQueueException(msg);}private static booleanpostcondition(boolean cond, String msg) {if(!cond) throw new CircularQueueException(msg);return true;}private boolean invariant() {// Guarantee that no null values are in the// region of 'data' that holds objects:for(int i = out; i != in; i = (i + 1) % data.length)if(data[i] == null)throw new CircularQueueException("null in CircularQueue");// Guarantee that only null values are outside the// region of 'data' that holds objects:if(full()) return true;for(int i = in; i != out; i = (i + 1) % data.length)if(data[i] != null)throw new CircularQueueException("non-null outside of CircularQueue range: "+ dump());return true;}public String dump() {return "in = " + in +", out = " + out +", full() = " + full() +", empty() = " + empty() +", CircularQueue = " + Arrays.asList(data);}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。