2015-06-19 43 views
0

我使用的是配對的Hashmap中對此我儲存的標籤和它的頻率,但我很困惑,我該怎麼頻率存儲在變量。 代碼如下:如何在Hashmap中的任何網站頁面上存儲標籤的頻率?

package z; 
import java.awt.List; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.HashSet; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.select.Collector; 
import org.jsoup.select.Elements; 
import org.jsoup.select.Evaluator; 
import org.jsoup.nodes.Element; 


public class crawler { 

    static String url=""; 

     public static void main(String[] args) { 
      int val=0; 
      String URL = "http://stackoverflow.com/"; 
      HashMap<Integer, String> myMap = new HashMap<Integer, String>(); 
      myMap.clear(); 
      try { 
       Document document = Jsoup.connect(URL).get(); 
       ArrayList<String> tags = new ArrayList<String>(); 

       System.out.println("Number of tags by select(\"*\") method =" + document.select("*").size()); 
       for(Element e : document.getAllElements()){ 
        tags.add(e.tagName().toLowerCase()); 
        myMap.put(val,tags.toString()); 
        val++; 
       } 
       System.out.println("The tags = " + tags); 
       System.out.println("Distinct tags = " + new HashSet<String>(tags)); 
       System.out.println("Distinct tags = " + myMap); 
      } catch (IOException e) { 
       System.out.println(e); 
      } 



    } 


} 

我怎樣才能增加val的值,這樣我可以存儲所有標籤的頻率是多少?我們需要多個變量嗎?

回答

1

我建議使用標籤作爲重點,而不是頻率。所以你的循環將是這樣的

String tagN; 
for(Element e : document.getAllElements()){ 
    tagN = tagName().toLowerCase(); 
    val = 1; 
    if(tags.contains(tagN){ 
     val+ = tags.get(tagN); 
    } 
    tags.put(tagN, val); 
} 
+0

謝謝噸..但我怎麼能迭代得到輸出? – rocky

+0

'爲(String鍵:tags.keySet()){的System.out.println( 「\」 「+鍵+ 」\「 - 」+ tags.get(鍵)+「 倍」);}' –

相關問題