Как добавить значение в список внутри другого списка?

1

У меня есть список списков, используя следующий код:

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);

Это происходит для многих других вариантов этого, с изменением строк.

То, что я хочу сделать, это перебрать список моих списков, а для каждого из них добавить значение в этот список. До сих пор я борюсь за ответ, и любая помощь будет оценена по достоинству.

  • 1
    use List <List <String >> keyHold = new ArrayList <List <String >> (); вместо ArrayList <List <String >> keyHold = new ArrayList <List <String >> ();
Теги:
list

3 ответа

0
Лучший ответ

Надеюсь, этот код поможет вам достичь своей цели, мне кажется, что, поскольку вы вызываете.add() в List, который является интерфейсом, а не реализацией интерфейса 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);
    }
  • 0
    Спасибо, я только что вернулся к этой проблеме и вспомнил, что писал о ней, это большое спасибо!
3

Чтобы перебирать список списков, вы будете использовать итератор, который возвращает List<String>. Затем вы можете работать с текущим экземпляром List<String> хранящимся в List<List<String>> и добавлять элемент или делать другие вещи.

Вот пример:

for (List<String> stringList : keyHold) {
    if (<condition>) {
        stringList.add(<value you want/need to add>);
    }
}
  • 0
    Самый чистый ответ
1

Статический метод asList(T... a) из Arrays class возвращает только представление списка массива. Вот почему вы получаете исключение (java.lang.UnsupportedOperationException), когда вы пытаетесь добавить элемент в список.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню