Bil*_* IV 0 java arrays arraylist args
我记得在某处看到一个示例,该示例通过删除最低编号的值来逐步遍历String args []
public static void main( String args[]) {
while (args.length > 0 ) {
// do something and obliterate elements from args[]
}
}
Run Code Online (Sandbox Code Playgroud)
显然,可以通过跟踪args中的当前位置并将其与args.length进行比较来实现;或由args []的内容制成的ArrayList,带有argsAL.size()。我想不起来ArrayList示例了吗?我知道这是一个边缘性问题,可能的答案是:“不,没有,也不应该有!”。也许我太专注了...
法案
不,没有,也不应该有!从阵列的前面删除将是不必要的昂贵方法。
您可能会想到许多脚本语言都有一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
public static void main(String[] args) throws Exception {
Queue<String> argQ = new ArrayQueue<String>(args);
String command = argQ.poll();
String target = argQ.poll();
}
Run Code Online (Sandbox Code Playgroud)
警告:未经测试
归档时间: |
|
查看次数: |
2152 次 |
最近记录: |