我正在使用配对的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的值以便我可以存储所有标签的频率?我们需要多个变量吗?
答案 0 :(得分: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);
}