Java 多维数组列表(索引错误)

Java 多维数组列表(索引错误),java,class,jakarta-ee,arraylist,multidimensional-array,Java,Class,Jakarta Ee,Arraylist,Multidimensional Array,我想在我的工作中使用多维数组列表。请帮我解决这个问题。我的代码是: public class newType { String name; int id; public newType() { name=""; id=0; } public newType(String name,int id) { this.name=name; this.id=id; } } public class MainClass { public st

我想在我的工作中使用多维数组列表。请帮我解决这个问题。我的代码是:

public class newType {
  String name;
  int id;

  public newType() {
    name="";
    id=0;
  }

  public newType(String name,int id) {
    this.name=name;
    this.id=id;
  }
}

public class MainClass {
  public static void main (String[] args) throws Exception {    

   HashMap<String, ArrayList<ArrayList<newType>>> temp=new HashMap<String,   ArrayList<ArrayList<newType>>>();

    ArrayList<ArrayList<newType>> arrObj=new ArrayList<ArrayList<newType>>();

    arrObj.clear();
    arrObj.add(new ArrayList<ValueType>());
    arrObj.add(new ArrayList<ValueType>());
    arrObj.add(new ArrayList<ValueType>());
    arrObj.get(0).add(new newType("Jhon",1));
    arrObj.get(1).add(new newType("get",1));
    arrObj.get(1).add(new newType("book",1));
    arrObj.get(2).add(new newType("coma",1));
    arrObj.get(2).add(new newType("brother",1));
    temp.put("Jhon", arrObj);

    arrObj.clear();
    arrObj.add(new ArrayList<newType>());
    arrObj.add(new ArrayList<newType>());
    arrObj.add(new ArrayList<newType>());
    arrObj.get(0).add(new newType("Mikel",1));
    arrObj.get(0).add(new newType("son",,2));
    arrObj.get(1).add(new newType("puts",2));
    arrObj.get(1).add(new newType("his",1));
    arrObj.get(2).add(new newType("when",1));
    arrObj.get(2).add(new newType("hich",1));
    temp.put("Mikel", arrObj);

    arrObj.clear();
    arrObj=temp.get("Mikel");
    System.out.println(arrObj.get(0).get(0).name);
  }
 }
公共类newType{
字符串名;
int-id;
公共newType(){
name=“”;
id=0;
}
public newType(字符串名,int-id){
this.name=name;
这个.id=id;
}
}
公共类主类{
公共静态void main(字符串[]args)引发异常{
HashMap temp=新的HashMap();
ArrayList arrObj=新的ArrayList();
arrObj.clear();
add(newarraylist());
add(newarraylist());
add(newarraylist());
获取(0).add(新的新类型(“Jhon”,1));
get(1).add(新的newType(“get”,1));
获取(1).add(新的新类型(“book”,1));
获取(2).add(新的新类型(“coma”,1));
获取(2).add(新的新类型(“兄弟”,1));
温度输入(“Jhon”,arrObj);
arrObj.clear();
add(newarraylist());
add(newarraylist());
add(newarraylist());
获取(0).add(新的新类型(“Mikel”,1));
获取(0).add(新的新类型(“子”,.2));
获取(1).add(新的newType(“puts”,2));
获取(1).add(新的新类型(“his”,1));
获取(2).add(新的newType(“when”,1));
获取(2).add(新的新类型(“hich”,1));
临时投入(“米克尔”,arrObj);
arrObj.clear();
arrObj=临时获取(“米克尔”);
System.out.println(arrObj.get(0.get(0.name));
}
}
当我运行此程序时,编译器会给我以下错误:

线程“main”java.lang.IndexOutOfBoundsException中出现异常:索引:0,大小:0 位于java.util.ArrayList.RangeCheck(未知源) 位于java.util.ArrayList.get(未知源) MainClass.main(MainClass.java:47)

该错误与arrObj.get(0.get(0.name)有关


如何解决它?

当您将
放入
HashMap
时,它不会添加2D
数组列表的副本,而是添加对它的引用。但是每次添加二维
ArrayList
时都会清除该二维
ArrayList
,因此在查询该二维
ArrayList
的内容时,会得到对同一个空二维
ArrayList
的两个引用

每次创建一个新的2D
ArrayList
,以便每次都可以添加单独的对象。而不是

arrObj.clear();
试一试

arrObj=newarraylist();

(无需上次清除()

当您将
放入
哈希映射时,它不会添加2D
数组列表的副本,而是添加对它的引用。但是每次添加二维
ArrayList
时都会清除该二维
ArrayList
,因此在查询该二维
ArrayList
的内容时,会得到对同一个空二维
ArrayList
的两个引用

每次创建一个新的2D
ArrayList
,以便每次都可以添加单独的对象。而不是

arrObj.clear();
试一试

arrObj=newarraylist();

(上次没有必要清除()

一个数组列表和多个维度似乎是不可能的@我不知道你的意思。这和数组的规则不一样吗?二维数组只是其他一维数组的一维数组。同样的规则也可以应用于列表(OP使用一个ArrayList来存储其他ArrayList)。@Pshemo列表不是一个数组,而是用自己的名字来命名。一个数组列表和多个维度似乎是不可能的@我不知道你的意思。这和数组的规则不一样吗?二维数组只是其他一维数组的一维数组。同样的规则也可以应用于列表(OP使用一个ArrayList来存储其他ArrayList)。@Pshemo列表不是一个数组,可以用自己的名字来命名。