Сравнение композитных строк по символам - PullRequest
0 голосов
/ 07 мая 2019

Я использую шаблон Composite для хранения текста.Например: есть некоторый текст, и у него есть несколько параграфов, каждый параграф содержит несколько предложений, каждое предложение состоит из некоторого количества слов, а слова состоят из «листьев» - символов.Я пытаюсь создать метод, который будет сортировать слова в предложении по 'char'.

public TextComponent sortBySymbol(TextComponent textComponent, char symbol) {
    Comparator<TextComponent> comparator =
            Comparator.comparingLong(o -> {
                char[] word = textComponent.toString().toCharArray();
                int counter = 0;
                for (char ch : word) {
                    if (ch == symbol) counter++;

                }
                return counter;
            });
    comparator=comparator.reversed();
    comparator= comparator.thenComparing(TextComponent::toString);
    textComponent.sort(comparator, SENTENCE);
    return textComponent;
}

@Override
public void sort(Comparator<TextComponent> comparator, TextType type) {
    if (textType == type) {
        textComponents.sort(comparator);
    } else {
        textComponents.forEach(o -> {
            if (o.getTextType() != TextType.CHAR) {
                o.sort(comparator, type);
            }
        });
    }
}
...