Java 打印给定 ArrayList 反转的代码

Java Code That Prints Reverse of Given ArrayList

所以我试图编写一个方法,该方法 returns 与给定的 ArrayList 相反,但它给我索引错误,我不知道如何解决它。我感谢您的帮助。这是我的代码:

import java.util.ArrayList;

public class question2 {

public static ArrayList<Double> reverse(ArrayList<Double> arraylist) {
    ArrayList<Double> result = new ArrayList<Double>();
    for(int i=0; i<arraylist.size(); i++) {
        result.set((arraylist.size()) - 1 - i, arraylist.get(i));
    }
    return result;
}

public static void main(String[] args) {
    
    ArrayList<Double> doubles = new ArrayList<Double>();
    doubles.add(1.5);
    doubles.add(2.3);
    doubles.add(7.7);
    doubles.add(8.6);
    System.out.println(reverse(doubles));
    
}

}

这是错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 3 out of bounds for length 0
public static ArrayList<Double> reverse(ArrayList<Double> arraylist) {
       ArrayList<Double> result = new ArrayList<Double>(arraylist.size());
        for(int i=arraylist.size()-1; i>=0; i—-) {
            result.add(arraylist.get(i));
        }
        return result;
     }

希望这能奏效!

您可能想尝试一下。它不需要单独的 List 并且循环次数仅为将整个列表复制到另一个列表的一半。

它的工作原理是在循环索引向中间移动时交换开头和结尾的值。

  • 设置size = list.size();
  • 迭代从 0i < size/2
  • 的循环
  • i 处的值保存到变量。
  • i 的位置设置为 size - i - 1
  • 的值
  • size - i - 1 的位置设置为保存的值。

这将继续进行,直到循环到达中间。请注意,对于 even 大小的列表,最里面的值是相邻和交换的。对于 odd 大小的列表,最里面的项目将被忽略,因为它的位置正确。

你能试试我的代码吗,它会为你工作

 public static List<Double> reverse(ArrayList<Double> arraylist) {
        List<Double> result = Arrays.asList(new Double[arraylist.size()]);
        for(int i=0; i<arraylist.size(); i++) {
            result.set((arraylist.size()) - 1 - i, arraylist.get(i));
        }
        return result;
    }
public static String reverse(ArrayList<Double> arraylist) {
ArrayList<Double> result = new ArrayList<Double>();
for(int i=arraylist.size() -1; i>=0; i--) {
    result.add(arraylist.get(i));
}
return result.toString();

}

reverse() 方法的 return 类型应该是 char[] 或 String,因为您从 main 方法在控制台上打印