在二维ArrayList中添加元素

时间:2012-03-03 23:02:51

标签: java multidimensional-array arraylist

我知道对于数组,你可以用这种方式在二维数组中添加一个元素:

 array[0][1] = 17; //just an example

如何使用ArrayList做同样的事情?

6 个答案:

答案 0 :(得分:6)

myList.get(0).set(1, 17);

可能?

这假定嵌套ArrayList,即

ArrayList<ArrayList<Integer>> myList;

并选择您选择的单词:此将值分配给内部列表中的特定位置,它不会添加一个。但是您的代码示例也是如此,因为数组具有固定大小,因此您必须以正确的大小创建它们,然后将值分配给各个元素槽。

如果你真的想添加一个元素,当然它是.add(17),但这不是你的代码所做的,所以我选择了上面的代码。

答案 1 :(得分:2)

outerList.get(0).set(1, 17);

,其中outerList为List<List<Integer>>

请记住,二维数组不存在。它们实际上是数组或数组。

答案 2 :(得分:1)

 ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
 data.add(new ArrayList<String>());
 data.get(0).add("String");

ArrayList<ArrayList<String>>包含ArrayList<String>

类型的元素

必须初始化每个元素

这些元素包含String

类型的元素

要在3行示例中找回String“String”,您可以使用

String getValue = data.get(0).get(0);

答案 3 :(得分:1)

ArrayList<ArrayList<Integer>> FLCP = new ArrayList<ArrayList<Integer>>();
FLCP.add(new ArrayList<Integer>());
FLCP.get(0).add(new Integer(0));

必须实例化每个元素。这里的外部ArrayList有ArrayList元素,首先你需要添加一个元素来使用get方法引用它。

一些额外的说明;在阅读其他答案和评论后:

1&GT;必须实例化每个元素;初始化与实例化不同(请参阅flexJavaMysqlanswer

2 - ;在Java中,确实存在二维数组; C#没有2D数组(请参阅JB Nizetanswer

答案 4 :(得分:0)

我发现最好和最方便的方式是声明你的2d arrayList,然后是一个nornal mono-dimension数组。

ArrayList<ArrayList<String>> 2darraylist = new ArrayList<>();
ArrayList<String> 1darraylist=new ArrayList<>();

然后填充'1D'阵列列表,然后将1D添加到2D阵列列表中。

1darraylist.add("string data");
2darraylist.add(idarraylist);

只要您的问题只是添加到列表中的元素,这将起作用。如果你想将它们添加到列表中的特定位置,则.get()。set();是你想坚持的。

答案 5 :(得分:0)

String[] myList = {"a","b","c","d"};
ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
data.add(new ArrayList<String>());
int outerIndex =0;
int innerIndex =0;
for (int i =0; i<list.length; i++) {
     data.get(outerIndex).add(innerIndex, list[i]);
     innerIndex++;
 }
System.out.println(data);

简单的循环将数据添加到多维数组中 对于每个外部索引,您需要添加

data.add(new ArrayList<String>());

然后递增外部索引,并重置内部索引 这看起来像这样。

public static String[] myList = {"a", "b","-","c","d","-","e","f","-"};

public static ArrayList<ArrayList<String>> splitList(String[] list) {

    ArrayList<ArrayList<String>> data = new ArrayList<ArrayList<String>>();
    data.add(new ArrayList<String>());
    int outerIndex =0;
    int innerIndex =0;
    for (int i=0; i<list.length; i++) {
        System.out.println("will add: " + list[i]);
        if(!list[i].contains("-")) {
            System.out.println("outerIndex: " + outerIndex +" innerIndex: "+ innerIndex);
            data.get(outerIndex).add(innerIndex, list[i]);
            innerIndex++;
        } else {
            outerIndex++;    // will move to next outerIndex
            innerIndex = 0;  // reset or you will be out of bounds
            if (i != list.length-1) {
                data.add(new ArrayList<String>());  // create an new outer index until your list is empty
            }
        }
   }  
    return data;
}
public static void main(String[] args) {
    System.out.println(splitList(myList));
}