Java 通过索引获取值。但功能有限(用户定义的功能)

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;

只有以下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; 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,您需要使用一个额外的队列来保存项已从初始队列中删除的。