如何在另一个列表中的列表中添加值?

时间:2014-12-23 15:02:14

标签: java list

我有一个列表列表,使用以下代码:

ArrayList<List<String>> keyHold = new ArrayList<List<String>>();
String cold[] = new String[]{"actions","cold","enabled"};
List<String> lCold = Arrays.asList(cold);
lCold.add(Rows.getRow(rowNum, 0));              
keyHold.add(lCold);         

String warm[] = new String[]{"actions","warm","enabled"};
List<String> lWarm = Arrays.asList(warm);
lWarm.add(Rows.getRow(rowNum, 1));  
keyHold.add(lWarm);

随着字符串的变化,这会继续发生更多变化。

我想要做的是遍历我的列表列表,并为其中的每个列表添加一个值到该列表。到目前为止,我正在努力寻找答案,我们将不胜感激。

3 个答案:

答案 0 :(得分:3)

要遍历列表列表,您将使用返回List<String>的迭代器。然后,您可以处理存储在List<String>中的当前List<List<String>>实例,并添加元素或执行其他操作。

以下是一个例子:

for (List<String> stringList : keyHold) {
    if (<condition>) {
        stringList.add(<value you want/need to add>);
    }
}

答案 1 :(得分:1)

Arrays class中的静态方法asList(T... a)仅返回数组的列表视图。当您尝试向列表中添加元素时,这就是您获得异常(java.lang.UnsupportedOperationException)的原因。

答案 2 :(得分:0)

希望这段代码可以帮助你实现目标,在我看来,因为你在List上调用.add()是一个接口而不是List接口的实现(就像ArrayList / LinkedList那样)你得到了错误。

    String cold[] = new String[]{"actions","cold","enabled"};
    String warm[] = new String[]{"actions","warm","enabled"};

    List<String> lCold = new ArrayList<String>(Arrays.asList(cold));
    List<String> lWarm = new ArrayList<String>(Arrays.asList(warm));

    List<ArrayList> listOfLists = new ArrayList<ArrayList>();//Create a list of lists
    listOfLists.add((ArrayList<String>) lCold);
    listOfLists.add((ArrayList<String>) lWarm);

    Iterator<ArrayList> firstIterator = listOfLists.iterator();
    while(firstIterator.hasNext()){//Iterate list of lists
        ArrayList<String> list = firstIterator.next();
        list.add("String");
    }       

    for(String s: lCold){
        System.out.println(s);
    }

    for(String s: lWarm){
        System.out.println(s);
    }