我有一个列表列表,使用以下代码:
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);
随着字符串的变化,这会继续发生更多变化。
我想要做的是遍历我的列表列表,并为其中的每个列表添加一个值到该列表。到目前为止,我正在努力寻找答案,我们将不胜感激。
答案 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);
}