我这弄双重数组,数组例子:yh_pjxx 其值为[['sa',[]],['aa',[]]],我用  ArrayList pjxx1 = (ArrayList)yh_pjxx.get(0),取得 pjxx1 ,值为['sa',[]];再用pjxx2 = (ArrayList)pjxx1.get(1); 取得pjxx1的数组即[],我对pjxx2进行操作,给这个数组赋值['1','2','3','4'],结果 yh_pjxx 的值变成了[['sa',['1','2','3','4']],['aa',['1','2','3','4']]],本来只想对yh_pjxx 的第一个值里的数组进行操作,结果2个值的数组都变了,请大家帮忙看看是怎么回事,如何解决这个问题?

解决方案 »

  1.   

    yh_pjxx 其值为[['sa',[]],['aa',[]]],
    这样说明你的yh_pjxx[0][1] 与 yh_pjxx[1][1] 是同一个对象,当时你放入yh_pjxx[1]时,没有重新new一个ArrayList,还是使用之前的ArrayList
      

  2.   

    我这也在做一个相似的
    ArrayList<String []> list = new ArrayList<String []>();
    list.add();
    你可以试一下,不过给一个字符串数组赋值时,好像要循环赋值。直接赋好像执行不过去
      

  3.   

    代码:
    yh_pjxx 其值为[['sa',['1','2','3']],['aa',['4','5','6']]],
    下面代码是想把yh_pjxx的第一个值['sa',['1','2','3']]中的['1','2','3']给清空,弄成如下效果
    [['sa',[]],['aa',['4','5','6']]];
    结果代码执行效果是 [['sa',[]],['aa',[]]];其中 userid = 'sa';
    ArrayList pjxx2 = new ArrayList();
    for (int k = 0; k < yh_pjxx.size(); k++) {
        ArrayList pjxx1 = (ArrayList)yh_pjxx.get(k);
        if (pjxx1.get(0).equals(userid)){
        pjxx2 = (ArrayList)pjxx1.get(1);
        pjxx2.clear();
        pjxx1.set(1, pjxx2);
       yh_pjxx.set(k, pjxx1);
      }
    }
      

  4.   


    for (int k = 0; k < yh_pjxx.size(); k++) { 
        ArrayList pjxx2 = new ArrayList();//这里修改了
        ArrayList pjxx1 = (ArrayList)yh_pjxx.get(k); 
        if (pjxx1.get(0).equals(userid)){ 
        pjxx2 = (ArrayList)pjxx1.get(1); 
        pjxx2.clear(); 
        pjxx1.set(1, pjxx2); 
        yh_pjxx.set(k, pjxx1); 
      } 

    这样试试。
      

  5.   

    是你初始化yh_pjxx时,放入在pjxx1.get(1)中的ArrayList已经是同一个了。这样表示两个是同一个对象,所有变化是一起的