2011-08-06 5 views
0

私はアクセスログファイルを読んでいて、IPでグループ化してマップに格納しています。最後に、各IPをキーとして取得し、値は日付とURLです。私は値をリストとして保存しています。マップの内容にアクセスして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アドレスに関連付けられた同じ日にこれらのWebページにアクセスしたいと思います。

答えて

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アドレスをキーです)簡単な解決策を含む複数のマップを作成するために、おそらく同じ値ですが、それぞれ異なるキーで作業します。

関連する問題