我需要通过其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>>
答案 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>