Jsoup: 对元素进行排序

3

我需要按照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个回答

6
Jsoup的Elements已经实现了Collection,它本质上是一个List<Element>,因此您根本不需要进行转换。您只需为Element编写自定义Comparator<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>

另请参阅:


这太棒了。谢谢! - ef2011

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接