Jsoup: сортировка элементов - PullRequest
       7

Jsoup: сортировка элементов

2 голосов
/ 27 октября 2011

Мне нужно отсортировать контейнер Jsoup Elements по его ownText (). Каков рекомендуемый способ сделать это?

Имеет ли смысл сначала преобразовать его в ArrayList для использования с пользовательским компаратором ?

Кстати, я попытался отсортировать его напрямую, как в Collections.sort(anElementsList), но компилятор жалуется:

Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for
the arguments (Elements). The inferred type Element is not a valid substitute for the 
bounded parameter <T extends Comparable<? super T>>

1 Ответ

4 голосов
/ 27 октября 2011

Jsoup Elements уже реализует Collection, по сути это List<Element>, поэтому вам вообще не нужно конвертировать , Вам просто нужно написать пользовательский Comparator<Element> для Element, поскольку он не реализует Comparable<Element> (вот почему вы видите этот компилятор ошибка).

Пример запуска:

String html ="<p>one</p><p>two</p><p>three</p><p>four</p><p>five</p>";
Document document = Jsoup.parse(html);
Elements paragraphs = document.select("p");

Collections.sort(paragraphs, new Comparator<Element>() {
    @Override
    public int compare(Element e1, Element e2) {
        return e1.ownText().compareTo(e2.ownText());
    }
});

System.out.println(paragraphs);

Результат:

<p>five</p>
<p>four</p>
<p>one</p>
<p>three</p>
<p>two</p>

Смотри также:

...