我有一个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
中的元素。最后,array
和list
都是空的。如何在array
中添加列表并在list
array.add(list)
答案 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);
}