1

我有一个 ArrayList,其中包含 URL 作为字符串。我想找到不同主机站点的列表及其出现的次数。例如,如果在我的列表中有 5 个指向 google 的链接,我想将它们全部计算在内。我从一个遍历列表中每个 URL 的 for 循环开始:

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
    }

如何从 url 字符串中指定 url 的主机(例如 google.com)。我不知道如何编码那部分。

4

4 回答 4

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());
    }
于 2013-04-24T15:17:00.930 回答
1

我建议您使用URL.getHost()来检索主机名,并使用 aMap<String,Integer>来存储您看到的每个主机的计数。

于 2013-04-24T15:10:28.257 回答
1

Create URL object (it has a constructor that recieves a String) and use it's getHost() method

于 2013-04-24T15:10:59.693 回答
0

如果您查看 URL 的 javadocs,您将看到有一个 getHost 方法: http ://docs.oracle.com/javase/6/docs/api/java/net/URL.html

于 2013-04-24T15:14:33.490 回答