Java 通过索引获取值。但功能有限(用户定义的功能)
只有以下4种方法:Java 通过索引获取值。但功能有限(用户定义的功能),java,Java,只有以下4种方法: addFirst()->在索引0处添加项 addLast()->在最后一个索引处添加项 removeFirst()->删除第一项 removeLast()->删除最后一项 以下代码是我迄今为止尝试的代码,但我无法使队列与初始队列相同: public static int get(Deque queue, int index) throws Exception { int value = 0; for (int i = 0; i <= index;
->在索引0处添加项addFirst()
->在最后一个索引处添加项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;
}
publicstaticintget(Deque队列,int索引)引发异常{
int值=0;
for(int i=0;i很抱歉响应太晚,但我认为我已经找到了解决您问题的方法。您不需要使用任何附加队列来存储原始队列的项目。您可以解决的方法是修改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;
}
publicstaticintget(Deque队列,int索引)引发异常{
整数值=null;
整数currentValue=null;
int queueSize=queue.size();
对于(int i=0;iHi,您能告诉我们您已经实现了什么以及确切的问题是什么吗?目前您的问题看起来像是在要求一个现成的解决方案,但堆栈溢出不起作用:)您的代码显示了Deque
,但您询问了ArrayList
-它是哪一个?@并且返回了已给出的函数。您不能使用内置函数library@AndyTurner有一个类Deque
,构造函数创建ArrayList
@AndyTurner,您需要使用一个额外的队列来保存项已从初始队列中删除的。