Jsoup:排序元素

时间:2011-10-26 20:20:11

标签: java collections jsoup

我需要通过其ownText()对Jsoup Elements容器进行排序。建议的方法是什么?

首先将它转换为ArrayList以便与a custom comparator一起使用吗?

BTW,我尝试直接对其进行排序,如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 个答案:

答案 0 :(得分:4)

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>

另见: