如何访问地图的内容并在java中处理它?

时间:2011-08-06 11:00:51

标签: java

我正在读取访问日志文件并按IP分组并将其存储在地图中。最后,我将每个IP作为密钥,值是日期和URL。我将值存储为列表。

HashMap<String,List<String>> map = new HashMap<String,List<String>>();

结果:

IP: 46.33.8.38 ==> [[16/Jul/2011:12:25:23, /TestWebPages/index.html], [16/Jul/2011:12:25:46, /TestWebPages/MScAIS-SEWN-Search-Optimisation.html], [16/Jul/2011:12:25:46, /TestWebPages/valid-rss-rogers.png]]
…

现在我想根据日期和时间进一步分组地图的内容。但我不知道如何访问地图中每个键的列表并进行处理!

所以我希望在新地图中与IP地址相关联的那一天访问这些网页。

2 个答案:

答案 0 :(得分:0)

如果您正在谈论只是通过密钥获取列表而不是将其打印出来:

List<String> data = map.get("46.33.8.38");
for(String str : data) {
    //Do what you like with each string here
}

或者,如果您的意思是想要获取地图中的所有值,entrySet()是您的朋友:

for(Map.Entry<String,List<String>> entry : map.entrySet()) {
    for(String str : entry.getValue()) {
        //Do what you like with each string here
    }
}

如果您正在谈论使用多个键访问地图中的值(因此它在日期,时间等以及IP地址上键入),最简单的解决方案可能是创建包含相同值但每个值的多个地图在另一把钥匙上工作。

答案 1 :(得分:0)

要迭代地图,请使用以下代码:

Map<String, List<String>> map = new HashMap<String, List<String>>();

for (Map.Entry<String, List<String>> entry : map.entrySet()) {
    String key = entry.getKey();
    List<String> valueList = entry.getValue();
    for (String value : valueList) {
        // Do something with value
    }
}