【问题标题】:Adding integer arraylist to arraylist in android在android中将整数arraylist添加到arraylist
【发布时间】:2014-03-23 01:55:21
【问题描述】:

我需要制作一个像

这样的二维数组列表
[[1,2,3],[2,3,4],[3,4,5]]

但是通过使用下面的代码,我得到的只是

[[3,4,5],[3,4,5],[3,4,5]]

最后一个数组只是一次又一次地重复。 在遍历问题时,我发现第一次通过它就像

[[1,2,3]

第二遍:

[[2,3,4],[2,3,4]]

第三遍:

[[3,4,5],[3,4,5],[3,4,5]].

请帮忙,因为我被它困住了。

ArrayList<ArrayList<Integer>> combiarray = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> innerarray = new ArrayList<Integer>();

combiarray.clear();

for(k=1;k<(row*column);k=k+column)
{
    for(j=k;;j++)
        {
            innerarray.clear();
            for(i=0;i<wincount;i++)
            {
                innerarray.add(j+i);
            }

            combiarray.add(innerarray);
            Toast.makeText(context,String.valueOf(combiarray),
                                 Toast.LENGTH_SHORT).show();
            i--;
            if((j+i)%column==0)
            {
                break;
            }
        }
    }

【问题讨论】:

    标签: java android arraylist integer


    【解决方案1】:

    问题是您总是将相同的arraylist 对象添加到列表中,而您只是修改其内容。 您必须在每次迭代时创建一个新对象。

    目前你正在做这样的事情:

    所以替换

    innerarray.clear();
    

    通过

    innerarray = new ArrayList<Integer>();
    

    【讨论】:

      【解决方案2】:

      ArrayList 类有一个名为 addAll 的方法,它将集合中的所有内容添加到您的集合中。您可以使用它将其他列表的内容添加到最终的 ArrayList 中。

      如果您希望生成所需格式的列表,您可以使用:

       ArrayList<ArrayList<Integer>> combiArray = new ArrayList<ArrayList<Integer>>();
          int columns = 3;
          for (int i = 1; i <= columns; i++) {
              ArrayList<Integer> innerArray = new ArrayList<Integer>();
              for (int j = i; j < i + columns; j++) {
                  innerArray.add(j);
              }
              combiArray.add(innerArray);
          }
      

      【讨论】:

      • 如果他想在 ArraysList> 中添加一个 ArrayList,只需使用 add() 方法即可。
      • 我使用了add方法。但它会覆盖 arraylist 中的旧值。
      • 他将相同的 ArrayList 实例添加到 combiarray,所以它的值当然会重置为最新的。将 innerArray 放入循环中使得每次迭代后都会创建一个新实例。
      • 谢谢。得到了解决方案。 :)
      【解决方案3】:

      尝试一次...

      for(k=1;k<(row*column);k=k+column)
      {
      for(j=1;j<=k;j++)
          {
              innerarray.clear();
              for(i=0;i<wincount;i++)
              {
                  innerarray.add(j+i);
              }
      
              combiarray.add(innerarray);
              Toast.makeText(context,String.valueOf(combiarray),Toast.LENGTH_SHORT).show();
              i--;
              if((j+i)%column==0)
              {
                  break;
              }
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-07
        • 2015-03-30
        • 1970-01-01
        • 2020-11-08
        • 1970-01-01
        • 2016-09-22
        • 2018-07-12
        • 1970-01-01
        相关资源
        最近更新 更多