Извлечь несколько блоков из списка - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть список строк, который выглядит следующим образом;

List list  =["BeginA","1","2","EndA","BeginB","3","EndB","BeginA","4","5";"6","EndA";"BeginC","EndC","BeginA","7","EndA"]

Мне нужно извлечь из списка над подсписком, который содержит блоки, образованные всеми блоками "BeginA" и "EndA", так результат будет примерно таким:

list sublist =["BeginA","1","2","EndA","BeginA","4","5";"6","EndA","BeginA","7","EndA"]

Мой начальный список может содержать несколько (n) блоков "BeginA" и "EndA", и все они являются последовательными, не вложенными блоками, после каждого начального блока это его конечный блок.

Я использовал java .util.list свойства "indexOf" и "lastIndexOf", но таким образом я смог извлечь только два блока.

Есть ли способ извлечь их все.

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Попробуйте это:

for (int i = 0; i < list.size(); i++) {
    if (list.get(i).equals("BeginA")) {
        while (!list.get(i).equals("EndA"))
            sublist.add(list.get(i++));
        sublist.add(list.get(i));
    }
}

0 голосов
/ 27 апреля 2020
  • L oop над массивом
    • , если текущий элемент BeginA, установить флаг
    • , если флаг установлен, скопировать текущий элемент в результат массив
    • , если текущим элементом является EndA, снимите флажок
...