有人可以告诉我我做错了什么,因为我有这个错误:
线程中的异常" main" java.lang.indexoutofboundsexception:index: 0,大小:0 java.util.arraylist.rangecheck(arraylist.java:653)at java.util.arraylist.get(arraylist.java:429)at javaapplication4.javaapplication4.main(javaapplication4.java:41)
ArrayList<List<Cartas>> tabuleiro = new ArrayList<>();
ArrayList <Integer> pos = new ArrayList<>();
pos.add(40);pos.add(50);pos.add(60);pos.add(31);pos.add(41);pos.add(22);pos.add(32);pos.add(42);pos.add(13);pos.add(23);pos.add(33);pos.add(24);pos.add(34);
for(int x=0; x<9; x++){
for(int y=0; y<7; y++){
for (Integer p : pos) {
if (p == (x*10+y)) {
tabuleiro.get(x).set(y, new Cartas(x,y,false));
}
}
}
}
for(int x=0; x<9; x++){
for(int y=0; y<7; y++){
System.out.println(tabuleiro.get(x).get(y).nomeCV);
}
}
创建一个包含" C"对象的2D arraylist,然后您可以实例化2D列表,例如:
C obj = new C(); //Creates a "C" object
ArrayList<ArrayList<C>> myArray = new ArrayList<ArrayList<C>>(); //Creates a 2 Dimensional ArrayList
myArray.add(new ArrayList<C>); //Adds an ArrayList<C> to the the 2D ArrayList
myArray.get(0).add(obj); //Adds a "C" object to the ArrayList that was added on the previous line
为了更好地理解阵列列表,请参阅此链接
在arraylist中创建一个arraylist:
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
(注意,list
此时没有任何内容)然后,您在list
中创建一个新的arraylist:
list.add(new ArrayList<String>);
然后:
list.get(0).add("Hello);
在list
'S 0th index
您可以使用guava表
Table<Integer, Integer, YourClassC> table = HashBasedTable.create();
table.put(0, 8, new YourClassC());
table.put(1, 3, new YourClassC());
table.put(2, 2, new YourClassC());
...
table.get(0, 0); // returns null
table.get(0, 8); // returns first instance of YourClassC
我不确定我是否理解您的问题,因为您似乎回答了自己。答案取决于您要如何将元素插入其中以及如何阅读它们。
这是我到目前为止能想到的一些方法,没有更多信息,我将无法选择:
使用二维数组
C[][]
,该阵列可能包含无效值。该解决方案需要从一开始就知道数组的大小。使用
ArrayList<ArrayList<C>>
,其中根列表是行列表,每行可能包含空项目和C对象。您可以根据需要添加更多行,并根据需要在线路上添加更多元素。使用2
ArrayList<List<C>>
,其中第一个是行列表,第二个是列列表。行和列将共享相同的对象,但根本不需要包含任何零值:每行只是行中包含的非零对象的列表,每列都相同。最后一个解决方案不容易操纵,但是如果您的矩阵确实很少,则有效的内存效率要高得多(包含很少的对象,但很多行和列)。