日期:2014-05-20  浏览次数:20697 次

【在线等】ArrayList的嵌套问题
我是新手,请教一个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,bc
a,bc,d,ef
解决办法,每行一个ArrayList