16、Map-Hashmap

一、Map集合:
1、以键值对形式存在的集合Map<K,V>
2、key不可重复的,Value可以重复
3、Key和Value可以允许为null。
Map接口有哪些常用的实现类?
Map
   AbastractMap
       HashMap
              LinkedHashMap
       TreeMap
       WeakHashMap
二、HashMap
    1、定义HashMap
       Map<K,V> map=new HashMap<K,V>();
       构造方法:初始容量16,最大值为2的30次方,默认加载因子0.75。
       这两个参数是影响HashMap性能的重要因素。
    2、常用方法:
       put(k,v) 添加一个元素
       get(k)   通过key获取Value
       remove(k) 通过key删除对应的键值对,返回值为Value
       size()   map的长度
       containsKey(K)  判断该K是否在map集合中,如何判断一个map中是否存在某个键  不能使用get(key)。
       containsValue(V)  判断该V是否在map集合中。
       putAll(map)     将一个map集合copy给两一个Map集合。 需要赋值的map.putAll(有值的map)。
       clear()  清空一个Map集合
       isEmpty() 判断一个map集合是否有键值对。
       values()  获取map集合的所有Value值,返回类型是Collection
    3、如何循环遍历(4种方法)
        a、keySet()+for循环
        b、keySet()+Iterator
        c、entrySet()+for循环
        d、entrySet()+Iterator

基本代码:

public class HashMapTest {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<>();
		//1、增加
		map.put("YG20160101", "岳");
		map.put("YG21060102", "阎");
		map.put("YG21060103", "徐");
		map.put("YG21060104", "殷");
		map.put("YG21060105", "张");
		map.put("YG21060106", "赵");
		map.put("YG21060107", "刘");
		map.put("YG21060108", "梁");
		map.put("YG21060109", "孙");
		
		//2、获取
		System.out.println("根据Key获取的value是:" + map.get("YG20160101"));
		
		//3.通过key删除对应的键值对,返回value
		String value = map.remove("YG20160101");
		System.out.println("删除的value是:"+ value);
		//4.修改,先删除后添加
		map.put("YG20160100", value);
		System.out.println("Map中的value元素  " + map);
		//5.长度
		System.out.println("Map的长度是: " + map.size());
		//6.判断是否包含Key,不能用get(Key)
		System.out.println("Map是否包含Key(\"YG20160109\") " + map.containsKey("YG21060109"));
		//7.判断是否包含Value
		System.out.println("Map是否包含Value(\"孙治宾\") " + map.containsValue("孙治宾"));
		//8.putAll 需要赋值的map2 用map2.putAll(map);
		Map<String,String> map2 = new HashMap<>();
		map2.putAll(map);
		System.out.println("Map2 元素是 "+map2);
		//9.map是否为空
		Map <String, String> map3 = new HashMap<>();
		map3  = null; //isEmpty()判断的是map中元素是否为空
//		System.out.println(map3.isEmpty());//map3空指针了
				
		//10.values 获取map中的值
		Collection<String> values = map2.values();
		for(String s : values){
			System.out.println("值: "+s);
		}
		System.out.println("——————————————————1————————————————————");
		//方法一  keySet + for循环
		Set<String> keySet = map.keySet();//API
		for(String key : keySet){
			String _value = map2.get(key);
			System.out.println("键:"+ key +"值:" +  _value);
		}
		System.out.println("———————————————————2———————————————————");
		//方法二  keySet + iterator
		Iterator< String> iterator = keySet.iterator();
		while(iterator.hasNext()){
			String key = iterator.next();
			String _value = map2.get(key);
			System.out.println("键:"+ key +"值:" +  _value);
		}
		System.out.println("———————————————————3———————————————————");
		//方法三 entrySet()
		Set<Entry<String, String>> entrySet = map2.entrySet();
		for(Entry<String,String> entry : entrySet){
			String key = entry.getKey();
			String _value = entry.getValue();
			System.out.println("键:"+ key +"值:" +  _value);
		}
		System.out.println("————————————————————4——————————————————");
		//方法四 
		Set<Entry<String, String>> entrySet2 = map2.entrySet();
		Iterator<Entry<String, String>> iterator2 = entrySet2.iterator();
		while(iterator.hasNext()){
			Entry<String,String> entry = iterator2.next();
			String key = entry.getKey();
			String _value = entry.getValue();
			System.out.println("键:"+ key +"值:" +  _value);
		}
		
	}
	public static void randomRedBall(){//统计生成的1-33出现的次数
		Map <Integer,Integer> map = new HashMap<>();
  		int i = 100000;
  		while(i > 0){
   			Random random = new Random();
   			int key = random.nextInt(33)+1;
   
   			if(map.containsKey(key)){
    				int value = map.get(key);
   				 value++;
   				 map.put(key, value);
   			}else {
   				 map.put(key, 1);
  			}
  			 i--;
  		}
 	 System.out.println(map);
	}
}


 

你可能感兴趣的:(16、Map-Hashmap)