Определить, какой уровень текста, что в настоящее время парсинга


Так я этот код в моей программе, и существует несколько его вариаций. Просто глядя на него, я чувствую, что там должен быть способ, чтобы сделать это более эффективным, но я не могу думать ни о чем. Просто глядя на него, у кого-нибудь есть идеи?

По сути, что код делает, это он определяет, какой уровень текста, что в настоящее время парсинга. Если это на уровне 0, он добавляет, что текст на aMainSection класса ArrayList.

Если это на уровне 1, он добавляет, что тело текста aChildSection из aMainSectionколлекции в aMainSection класса ArrayList). Затем он задает aMainSection текст к родительским текст в новой коллекции.

и т. д.

Примечания:

  • aMainSection & aChildSection являются артефакты ArrayList типа раздел (пользовательский класс)
  • levelCount - это просто массив типа инт, размер 10 (абстрактное число)

Код

// Adds the passed in heading text to the appropriate section
    public static void addSectionText(String text)
    {   
        if (currentLevel == 0)
        {
            aMainSection.get(levelCount[0] - 1)
            .addSection(text);
        }
        else if (currentLevel == 1)
        {
            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .addSection(text);

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .getSection());
        }
        else if (currentLevel == 2)
        {
            aMainSection.get(levelCount[0] - 1)

            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .addSection(text);

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .getSection());

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .aChildSection.get(levelCount[1] - 1)
                    .getSection());
        }   
        else if (currentLevel == 3)
        {
            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .addSection(text);

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .getSection());

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .aChildSection.get(levelCount[1] - 1)
                    .getSection());

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .aChildSection.get(levelCount[1] - 1)
                    .aChildSection.get(levelCount[2] - 1)
                    .getSection());
        }       
        else if (currentLevel >= 4)
        {
            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .aChildSection.get(levelCount[4] - 1)
            .addSection(text);

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .aChildSection.get(levelCount[4] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .getSection());

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .aChildSection.get(levelCount[4] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .aChildSection.get(levelCount[1] - 1)
                    .getSection());

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .aChildSection.get(levelCount[4] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .aChildSection.get(levelCount[1] - 1)
                    .aChildSection.get(levelCount[2] - 1)
                    .getSection());

            aMainSection.get(levelCount[0] - 1)
            .aChildSection.get(levelCount[1] - 1)
            .aChildSection.get(levelCount[2] - 1)
            .aChildSection.get(levelCount[3] - 1)
            .aChildSection.get(levelCount[4] - 1)
            .addParentSection(
                    aMainSection.get(levelCount[0] - 1)
                    .aChildSection.get(levelCount[1] - 1)
                    .aChildSection.get(levelCount[2] - 1)
                    .aChildSection.get(levelCount[3] - 1)
                    .getSection());
        }
    }

Любая помощь или мысли будут оценены.



Комментарии
1 ответ

Что много повторений не имеет запаха к нему. Вы можете упростить его сохранение и повторное использование промежуточных значений, похожее на то, что я показал ниже?

    else if (currentLevel == 3)
{
Section level0Section = aMainSection.get(levelCount[0] - 1);
Section level1Section = level0Section.aChildSection.get(levelCount[1] - 1);
Section level2Section = level1Section.aChildSection.get(levelCount[2] - 1);
Section level3Section = level2Section.aChildSection.get(levelCount[3] - 1);
level3Section.addSection(text);

level3Section.addParentSection(level0Section.getSection());

level3Section.addParentSection(level1Section.getSection());

level3Section.addParentSection(level2Section.getSection());
}

4
ответ дан 21 июля 2011 в 05:07 Источник Поделиться