我是新手,请教一个ArrayList嵌套的问题。
有个二维数组:
a,bc,.....(每行元素个数不定)
d,ef,.....
.
.
.
(元素行数不定)
ArrayList pages_l=new ArrayList();
ArrayList pages_r=new ArrayList();
pages_l.add("a");
pages_l.add("bc");
.....
pages_r.add((ArrayList)(pages_l));
pages_l.add("d");
pages_l.add("ef");
.....
pages_r.add((ArrayList)(pages_l));
.....
那么,取值的时候,我想取第2行,第2个元素 ef :
((ArrayList)pagesinfo.get(1)).get(1).toString();
结果取到的是第1行第2个元素bc !!!
后来我试了下,假如第1行是3个元素,那么,((ArrayList)pagesinfo.get(0)).get(3+2).toString();这样才能取到 ef
也就是说pages_r始终是个一维的数组,请教是为什么呢,,,,怎么样才能实现二维数组呢?
------解决方案--------------------
你的pages_l是同一个
每次add后,重新new ArrayList
------解决方案--------------------
我写了个例子,对你有帮助。
- Java code
import java.util.ArrayList;public class Test { public static void main(String[] args) { ArrayList col_lst = null; ArrayList row_lst = null; // 行 row_lst = new ArrayList(); // 第一列 col_lst = new ArrayList(); col_lst.add("a");// 第一行,第一列 col_lst.add("bc");// 第一行,第二列 row_lst.add(col_lst); // 第二列 col_lst = new ArrayList(); col_lst.add("d");// 第二行,第一列 col_lst.add("ef");// 第二行,第二列 row_lst.add(col_lst); String element1 = ((ArrayList) (row_lst.get(0))).get(1).toString(); System.out.println(" 第一行,第二列:" + element1); String element2 = ((ArrayList) (row_lst.get(1))).get(1).toString(); System.out.println(" 第二行,第二列:" + element2); }}
------解决方案--------------------
- Java code
你在添加 pages_l.add("d"); pages_l.add("ef"); 时,pages_l已经有a,bc两个元素了,所以结果是a,bca,bc,d,ef解决办法,每行一个ArrayList