2011-09-06 65 views
3

一種方式來與等於一些預定義的字符串文本()CUL鏈接很簡單:Jsoup:「選擇只用文字鏈接()等於」

Elements links = document.getElementsByTag("a");    
for (Element link : links) { 
    if (link.text().equals("So & so") || link.text().equals("such & such") { 
     // add link.attr("href") to our container; 
    } 
}     

但作爲文本的數量()的條件下生長,這種方法看起來效率越來越低。

在Jsoup有沒有更好的方法來完成這項工作?

回答

4

這與Jsoup沒有任何特定的關係,但爲什麼不使用Set等HashSet來保存有效的字符串呢?然後,如果集合被稱爲「validTextSet」,你可以很簡單,高效地測試,如果文本是集合與

 if (validTextSet.contains(link.text())) { 
     // add link.attr("href") to our container; 
    } 
+0

這是絕對的性能改進,似乎沒有這樣的已經建立了一個機制進入Jsoup,所以我會很快接受。有趣的是,儘管在高級編程語言中取得了很大的進步,但通過一系列指向函數的指針實現非整數切換/大小寫的舊「C」技術在Java中仍然適用(變相)。我也是+1。 – ef2011

+0

@ ef2011:我不驚訝這不是在Jsoup中,因爲它實際上不是解析HTML的一部分,而是一旦你得到它,你會如何處理這些信息。另外,我認爲HashMap在理論上比switch/case更快,但我可能是錯的。 –

+0

這就是我的意思。 'C'中一個**優化的開關/情況實際上是一個變相的HashMap(散列用作數組的即時訪問索引)。 – ef2011