我有一个ArrayList,其中包含URL作为字符串。我想找到不同主机站点的列表及其出现的次数。 例如,如果在我的列表中有5个谷歌链接我想要全部计算。我开始使用for循环迭代列表中的每个URL:
for(int i = 0;i<list.size(); i++){
//for every url at i identify the host site and put in hashmap where the key is the
//host site and the variable is the number of URL's from that host
}
如何从网址字符串中指定网址的主机(例如google.com)。我不知道如何编写该部分。
答案 0 :(得分:3)
类似的东西(未经测试,但原则是有效的)?
Map<String, Integer> map = new HashMap<String, Integer>();
for(int i = 0;i<list.size(); i++)
{
URL url = new URL(list[i]);
if (map.containsKey(url.getHost()))
{
map.put(url.getHost(), map.get(url.getHost()) + 1);
}
else
{
map.put(url.getHost(), 1);
}
}
如果要打印哈希映射:
for (Map.Entry entry : map.entrySet())
{
System.out.println(entry.getKey() + " " + entry.getValue());
}
答案 1 :(得分:1)
我建议您使用URL.getHost()
来检索主机名,并使用Map<String,Integer>
来存储您看到的每个主机的数量。
答案 2 :(得分:1)
创建URL对象(它有一个收到String的构造函数)并使用它的getHost()方法
答案 3 :(得分:0)
如果您查看了javadocs的URL,您会看到有一个getHost方法:http://docs.oracle.com/javase/6/docs/api/java/net/URL.html