不,没有,也不应该有!从数组的前面删除将是一种不必要的昂贵方法。
您可能会想到许多脚本语言都有一个shift
操作符来使下一个元素出队(perl、bash 等)。
编辑:只是为了后代,这是一个非常简单的 Queue 实现,它允许您“伪造”相同的功能(即封装光标):
class ArrayQueue<E> extends AbstractQueue<E> {
private int cursor = 0;
private final E[] data;
public ArrayQueue(E[] data) {
this.data = data;
}
private boolean inRange() {
return cursor < data.length;
}
@Override
public E peek() {
return inRange() ? data[cursor] : null;
}
@Override
public E poll() {
return inRange() ? data[cursor++] : null;
}
@Override
public boolean offer(E e) {
throw new UnsupportedOperationException();
}
@Override
public void clear() {
cursor = data.length;
}
@Override
public Iterator<E> iterator() {
//ommitted for brevity
}
@Override
public int size() {
return data.length - cursor;
}
}
用法:
public static void main(String[] args) throws Exception {
Queue<String> argQ = new ArrayQueue<String>(args);
String command = argQ.poll();
String target = argQ.poll();
}
警告:未经测试