Java在数组的内部列表中添加一个字符串

时间:2014-07-01 00:41:40

标签: java arraylist multidimensional-array 2d

我试图在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 ...

2 个答案:

答案 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的元素是字符串。

enter image description here

如果要修改相同的arrayList(特别删除值),最好在阅读时使用CopyOnWriteArrayList