Я использую шаблон 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);
}
});
}
}