Лучший способ создать n массивов, содержащих объекты - PullRequest
0 голосов
/ 22 апреля 2019

Немного застрял, и любой вклад будет высоко ценится.
Краткое описание:

У меня есть ArrayList строк.

У меня есть цикл for, повторяющий указанный ArrayList.

Когда цикл начинается, он создает ArrayList (назовем его list1).

Если строковые критерии не выполнены (.match имеет значение false), тогда текущий элемент помещается в ранее созданный ArrayList. (Песни1)

Если в текущем элементе удовлетворяются строковые критерии (.match имеет значение true), создается новый ArrayList. (Давайте назовем это list2)

Если следующая строка не соответствует критериям (.match имеет значение true), она поместит этот элемент в ранее созданный ArrayList (list2)

Это продолжает цикл создания ArrayList, если критерии не выполнены, и помещает элемент в ранее созданный ArrayList, если критерии выполнены. Это происходит до тех пор, пока цикл for не закончится.

Примечания:
Вновь созданные ArrayLists будут содержать объекты, основанные на текущем строковом элементе, для простоты попыток объяснить это я пропустил эту часть.

Поскольку я никогда не создавал динамически ArrayLists, я заблудился, как это сделать. Имейте в виду, я не просто спрашиваю, как динамически создать ArrayList, потому что я знаю, что на этот вопрос здесь уже дан ответ.

Пожалуйста, спросите, нужна ли вам какая-либо часть этого разъясненного, у меня есть мышление программиста, где это имеет смысл в моей голове, но это трудно объяснить с точки зрения непрофессионала.

Пример общего кода:

for(int i=0; i<fileList.size(); i++) {
        ArrayList <question> list1= new ArrayList <question> ();

        if(fileList.get(i).matches("^[|]+[|]+[|]+[1-9]+")) {
            ArrayList <question> listN= new ArrayList <question> ();
        }
        else
            currentArray.add(fileList.get(i)); //CurrentArray is what ever the last created ArrayList is
    }

1 Ответ

2 голосов
/ 22 апреля 2019
ArrayList<ArrayList<Question>> lists= new ArrayList<>();
lists.add(new ArrayList<Question>());        

for(int i=0; i<fileList.size(); i++) {

    if(fileList.get(i).matches("^[|]+[|]+[|]+[1-9]+")) {
         lists.add(new ArrayList<Question>());
    } else {
        lists.get(lists.size() - 1).add(fileList.get(i));
    }

}

Я предполагал, что Вопрос был объектом, вы можете заменить его на String, если нет.Идея, о которой говорилось в комментариях, состоит в том, чтобы создать свой «список вопросов» перед циклом.Таким образом, вы могли бы использовать его после.Также, если первый элемент в fileList всегда совпадает, вам не нужно создавать список перед входом в цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...