当前位置: 首页 > 知识库问答 >
问题:

线程“main”java中出现异常。lang.IndexOutOfBoundsException:源不适合dest

钱德元
2023-03-14

我有个目标:

   static class Truck{
        ArrayList<Integer> route=new ArrayList<Integer>();
        double weight=0;
        int route_weight=0;
        
        Truck() {
        }
        Truck(ArrayList<Integer> route) {
            Collections.copy(this.route, route);
        }
getters() and setters()
}

进入此列表的对象:

static ArrayList<Truck> trucks=new ArrayList<Trucks>();

我正试着把清单完整地复制下来:

        ArrayList<Truck> copy=new ArrayList<>();
        copy=cloneList(trucks);
    public static ArrayList<Truck> cloneList(ArrayList<Truck> trucksList) {
        ArrayList<Truck> clonedList = new ArrayList<Truck>();
        for (Truck truck : trucks) {
            Truck w=new Truck(truck.getroute());
            clonedList.add(w);
        }
        return clonedList;
    }

但是我得到一个错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Source does not fit in dest

获取路线返回:

[0, 9, 11, 1, 15, 3, 0]

共有1个答案

洪越泽
2023-03-14

收藏。复制要求目标列表的大小至少等于源列表的大小。你的就是这个。当您尝试复制时,route的大小为0,因此会出现异常。

而是使用addAll

Truck(ArrayList<Integer> route) {
   this.route.addAll(route);
}
 类似资料: