只有这四种方法:
addFirst()
->在索引0处添加项目。addLast()
->在最后一个索引处添加项目。removeFirst()
->删除第一项。removeLast()
->删除最后一项。下面的代码是到目前为止我尝试过的,但是我无法使队列与初始队列相同:
public static int get(Deque queue, int index) throws Exception {
int value = 0;
for (int i = 0; i <= index; i++) {
if (value != 0) {
for (int j = 0; j < index; j++) {
queue.addFirst(value);
}
}
value = queue.removeFirst();
}
System.out.print(value);
System.out.println();
return value;
}
我需要通过索引获取arraylist的值
答案 0 :(得分:0)
很抱歉,您的回复很晚,但是我认为我已经找到了解决您问题的方法。您不需要使用任何其他队列来存储原始队列的项目。可以为您解决的方法是修改for循环。 您可以这样做:
这不是完美的解决方案,因为您将必须检查期望索引是否不小于0或大于队列大小,但是它应该为您提供解决方案的基本框架并允许您为输入队列保留原始内容。
可用于执行我描述的步骤的代码如下
public static int get(Deque<Integer> queue, int index) throws Exception {
Integer value = null;
Integer currentValue = null;
int queueSize = queue.size();
for (int i=0; i<queueSize; i++) {
currentValue = queue.removeFirst();
queue.addLast(currentValue);
if (i == index) {
value = currentValue;
}
}
return value;
}
请注意,我已经在队列参数(Deque<Integer> queue), as without it you would have to cast value returned by
queue.removeFirst()``中向循环中的Integer / int添加了类型声明。