2011-08-06 47 views
0

我正在讀取訪問日誌文件並按IP進行分組並將其存儲在地圖中。最後,我將每個IP作爲關鍵字,值是日期和網址。我將這些值存儲爲一個列表。如何訪問地圖的內容並在java中處理它?

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地址在新的地圖相關聯的同一天訪問這些網頁。

回答

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 
    } 
} 
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地址)使用多個鍵映射訪問值最簡單的解決方案可能是創建一個包含多個地圖相同的值,但每個工作在不同的鍵上。

相關問題