在java中为2d arraylist添加一个arraylist

时间:2016-10-28 12:29:26

标签: java arrays string list arraylist

我有一个2D arraylist,我想用几个1D arraylists填充它。我的代码如下:

ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>(); 
ArrayList<String> list = new ArrayList<String>();

while (ts2.next()) {
    list.add( ts2.getString("userName");
    list.add(ts2.getString("userId"));  
    array.add(list);
    list.clear();
}

我注意到list.clear()删除了list中的元素,但也删除了array中的元素。最后,arraylist都是空的。如何在array中添加列表并在list

之后清除array.add(list)

3 个答案:

答案 0 :(得分:1)

您可以克隆列表:

array.add(list.clone());

或者您可以在循环内实例化列表对象:

    ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>(); 

    while (ts2.next()) {
        ArrayList<String> list = new ArrayList<String>();
        list.add( ts2.getString("userName");
        list.add(ts2.getString("userId"));  
        array.add(list);
    }

然后你甚至不需要清除它。

答案 1 :(得分:1)

你可以这样做:

    ArrayList<String[]> arr = new ArrayList<String[]>();
    String[] str = new String[2];
    while (ts2.next()) {
        str[0] = ts2.getString("userName");
        str[1] = ts2.getString("userId");  
        arr.add(str);
    }

如果你也是一个arraylist:

    ArrayList<ArrayList<String>> arr = new ArrayList<ArrayList<String>>();
    while (ts2.next()) {
        ArrayList<String> arrString = new ArrayList<String>();
        arrString.add(ts2.getString("userName"));
        arrString.add(ts2.getString("userId"));  
        arr.add(arrString);
    }

答案 2 :(得分:1)

您可以创建要添加到现有实例中的ArrayList<>新实例。

while (ts2.next()) {
    List<String> list = new ArrayList<>();
    list.add(ts2.getString("userName"));
    list.add(ts2.getString("userId"));  
    array.add(list);
}

然而,更好的方法是将这些值映射到类的新实例中。

List<MyClass> = new ArrayList<>();

while (ts2.next()) {
    MyClass i = new MyClass(ts2.getString("userName"), ts2.getString("userId"));
    array.add(i);
}