JavaでConcurrentHashMapを巡る4つの方法

3478 ワード

具体的なコードは以下の通りです.
package other;

import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Java   Map     ,      ConcurrentHashMap,
 *        HashMap
 */
public class IteratorMap {
	public static void main(String[] args) {
		Map map = new ConcurrentHashMap();
		init(map);
		
		//   : for-each     entries   
		System.out.println("   : for-each     entries   ");
		for(Map.Entry entry: map.entrySet()) {
			 System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
		}
		
		//   : for-each     keys values,                ,         10%
		System.out.println("   : for-each     keys values,                ");
		//   
		for(String key : map.keySet()) {
			System.out.println("key = " + key);
		}
		
		//   
		for(String value : map.values()) {
			System.out.println("value = " + value);
		}
		
		//   :  Iterator  ,           ,        
		//    
		Iterator> entries = map.entrySet().iterator();  
		System.out.println("  Iterator  ,      :");
		while (entries.hasNext()) {  
		  
		    Map.Entry entry = entries.next();  
		  
		    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
		    
		    //         ,           0
		    if("0".equals(entry.getKey())) {
		    	map.remove(entry.getKey());
		    }
		}  
		
		//     
		Iterator entrys = map.entrySet().iterator();  
		System.out.println("  Iterator  ,       ");
		while (entrys.hasNext()) {  
		  
		    Map.Entry entry = (Map.Entry) entrys.next();  
		  
		    String key = (String)entry.getKey();  
		  
		    String value = (String)entry.getValue();  
		  
		    System.out.println("Key = " + key + ", Value = " + value);  
		  
		}  
		
		//   :       ,        ,     
		System.out.println("   :       ");
		for (String key : map.keySet()) {  
			  
		    String value = map.get(key);  
		  
		    System.out.println("Key = " + key + ", Value = " + value);  
		  
		}  
	}

	/**
	 *    Map
	 * @param map
	 */
	private static void init(Map map) {
		if(map == null) {
			throw new RuntimeException("    ,       ");
		}
		for(int i = 0; i < 10; i ++) {
			map.put(String.valueOf(i), String.valueOf(i));
		}
	}
	
}

実行結果:
方法1:for-eachループでentriesを使用してKey=0,Value=0 Key=1,Value=1 Key=2,Value=2 Key=3,Value=3 Key=4,Value=4 Key=5,Value=5 Key=6,Value=6 Key=7,Value=7 Key=8,Value=8 Key=9,Value=9,方法2:for-eachループでkeysまたはvaluesをループするこの方法は、値またはキーが必要な場合key=0 key=1 key=2 key=3 key=4 key=5 key=6 key=7 key=8 key=9 value=0 value=1 value=2 value=3 value=4 value=5 value=6 value=7 value=8 value=9をIteratorで巡回し、汎用型:Key=0,Value=0 Key=1,Value=1 Key=2,Value=2,Value=2 Key=3,Value=3 Key=4,Value=4 Key=5,Value=5 Key=6,Value=6 Key=7,Value=7 Key=8,Value=8 Key=9,Value=9はIterator遍歴を用い,汎型Key=1,Value=1 Key=2,Value=2 Key=3,Value=3 Key=4,Value=4 Key=5,Value=5 Key=6,Value=6 Key=7,Value=7,Value=7 Key=7,Value=7 Key=7,Value=7 Key=7,Value=7 Key=4,Value=4 Key=4 Key=4,Value=4 Key=5,Value=5 Key=6,=8,Value=8 Key=9,Value=9方式4:キー探索値によりKey=1,Value=1 Key=2,Value=2 Key=3,Value=3 Key=4,Value=4 Key=5,Value=5 Key=6,Value=6 Key=7,Value=7 Key=8,Value=8 Key=9,Value=9