我试图在2D列表中添加字符串值。能够使用这个添加第一层:
List<List<String>> twodaray = new ArrayList<List<String>>();
List<String> x = new ArrayList<String>();
for ( int i = 0, m = 1; i < attribteList.size(); i = i+2, m = m+2) {
String attributeName = attribteList.get(i);
x.add(attributeName);
}
twodaray.add(x);
for(List<String> ls : twodaray) {
System.out.println(Arrays.deepToString(ls.toArray()));
}
想知道如何访问ArrayList的内层,比如打印出来(sysout),甚至是为它添加值?这样的事情。
for(List<String> ls : twodaray) {
System.out.println(Arrays.deepToString(ls.toArray()));
for(List<List<String>> ls2d : ls) {
if (ls = something) {
ls2d.add(something);
}
}
}
有点新的使用这个二维列表和任何帮助非常感谢。 TY ...
答案 0 :(得分:0)
目前还不清楚你究竟想要做什么,但是,这个代码除了几个错误(=应该是.equals(),并且内部和外部的foreach循环是有些混乱):
List<String> a = new List<String>();
a.add("Hello");
List<String> b = new List<String>();
b.add("World");
List<List<String>> ls = new List<List<String>>();
ls.add(a);
ls.add(b);
//The outer part (ie. one List of a List of strings
for(List<String> ls : twodaray) {
//The inner part (ie. one string for each list of strings)
for(String str : ls) {
//Check two things for equality (.equals() for strings)
if (str.equals("Hello")) {
//Adding "something" to the list (that str is in);
ls.add("something");
}
}
}
这个问题与this非常相似。
答案 1 :(得分:0)
我认为应该是这样的。
for(List<String> ls : twodray) { // twodaray is a List<List<String>>
System.out.println(ls); // Yes you can simple sysout
for(String str : ls) { // ls is a List<String>
if (str.equals("something")) {
// do something.
}
}
}
我认为更好地理解这个2D ArrayList的结构。 2D ArrayList的元素是1D ArrayLists。 1D ArrayList的元素是字符串。
如果要修改相同的arrayList(特别删除值),最好在阅读时使用CopyOnWriteArrayList。