javaAPI_集合基础_Map集合以及其子类
Map集合以及其相关子类
1.map集合的概述以及特点
  map集合是将键映射到值的对象。一个映射不能够包含重复的键;每一个键最多只能够映射到一个值。
2.Collection集合与Map集合的区别
  Map集合存储元素是成对出现的,也就是键值对出现,而且键是不可以重复的。
  Collection集合存储元素是一个一个存储的,也就是单一存储的。
3.Map集合的功能特点
  (1).添加功能
      V put(K key,V value);添加元素。如果是相同的键再次添加,这一个时候体现的是替换功能,即只存储最后一个数据。
  (2).删除功能
      void clear();移除所有的键值对元素。
	  V remove(Object key);根据键删除键值对元素,并把值返回。
  (3).判断功能
      boolean contaiansKey(Object key);判断集合是否包含指定的键
	  boolean contaiansValue(Object value);判断集合是否包含指定的值
	  boolean isEmpty();判断集合是否为空
  (4).获取功能
      Set<Map.Entry<K,V>> entrySet():返回集合的键值对对象
	  V get(Object key):根据键获取值
	  Set<K> keySet():获取集合中的所有键的集合
  (5).长度功能
      int size():返回集合中的键值对对数。
	  
4.Map集合的遍历
  (1).Map集合的遍历方式1:(纵向查找,先找键后找值)
      A:获取所有的键。
	  B:遍历键的集合,获取得到每一个键。
	  C:然后按照键去找值。
	  
    //代码体现
	public static void main(String[] args) {
		//创建对象
		Map<String, String> mp = new HashMap<String, String>();
		//添加元素
		mp.put("张三", "张三1");
		mp.put("李四", "李四1");
		mp.put("王五", "王五1");
		mp.put("王二麻子", "王二麻子1");
		
		//遍历
		//获取所有的键
		Set<String> set = mp.keySet();
		//遍历集合,获取得到每一个键
		for(String key:set){
			//按照键去找值
			String value = mp.get(key);
			System.out.println(key+"-----"+value);
		}	
	}
	
  (2).Map集合的遍历方式2:(横向查找,先找出一对一对的,然后再往下移动查找其他内容)
      A:获取所有键值对对象的集合
	  B:遍历键值对对象的集合,得到每一个键值对对象
	  C:根据键值对对象获取键和值
	  
	//代码体现
	public static void main(String[] args) {
		//创建对象
		Map<String, String> mp = new HashMap<String, String>();
		//添加元素
		mp.put("张三", "张三1");
		mp.put("李四", "李四1");
		mp.put("王五", "王五1");
		mp.put("王二麻子", "王二麻子1");
		
		//遍历
		//获取所有键值对对象的集合
		Set<Map.Entry<String, String>> st = mp.entrySet();
		//遍历
		for(Map.Entry<String, String> me:st){
			String key = me.getKey();
			String value = me.getValue();
			System.out.println(key+"-----"+value);
		}
		
	}
HashMap类
1.概述
  HashMap类键值哈希表结构,可以保证键的唯一性。是一个基于哈希表的map实现
2.HashMap类的基本使用
  public static void main(String[] args) {
		//创建对象
		HashMap<String, String> hm = new HashMap<String, String>();
		//添加元素
		String key = "赵四";
		String value = "刘美兰";
		hm.put(key, value);
		hm.put("王长贵", "谢大脚");
		hm.put("刘大脑袋", "王云");
		//体现替换功能:把刘美兰替换为刘美兰1
		hm.put("赵四", "刘美兰1");
		
		//获取键集合
		Set<String> set = hm.keySet();
		//遍历
		for(String str:set){
			String getValue = hm.get(str);
			System.out.println(str+"----"+getValue);
		}
	}
	//输出结果:
	赵四----刘美兰1
    王长贵----谢大脚
    刘大脑袋----王云
LinkedHashMap类
1.概述
  LinkedHashMap类是有序的(存和取有序)map集合。由于是HashMap的一个子类,所以同样具备相关的一些特性。
  
2.LinkedHashMap类基本使用
  public static void main(String[] args) {
		//创建对象
		LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>();
		//添加元素
		String key = "赵四";
		String value = "刘美兰";
		hm.put(key, value);
		hm.put("王长贵", "谢大脚");
		hm.put("刘大脑袋", "王云");
		//体现替换功能:把刘美兰替换为刘美兰1
		hm.put("赵四", "刘美兰1");
		
		//获取键集合
		Set<String> set = hm.keySet();
		//遍历
		for(String str:set){
			String getValue = hm.get(str);
			System.out.println(str+"----"+getValue);
		}	
	}
TreeMap类
1.概述
  TreeMap类是一个键是红黑树结构的map集合,这样可以保证键的有序和唯一性。
  
2.TreeMap类基本使用
  public static void main(String[] args) {
		//创建对象
		TreeMap<String, String> tm = new TreeMap<String, String>();
		//添加元素
		tm.put("hello", "test");
		tm.put("world", "test");
		tm.put("java", "test");
		tm.put("world", "test");
		tm.put("javaEE", "test");
		
		//获取键集合
		Set<String> set = tm.keySet();
		//遍历
		for(String str:set){
			String getValue = tm.get(str);
			System.out.println(str+"----"+getValue);
		}	
	}
	//输出结果:[实现了自然排序,因为使用的是构造方法]
	hello----test
    java----test
    javaEE----test
    world----test
常见面试题:
1.HashMap和Hashtable之间的区别?
  HashMap:线程不安全,效率高,允许有null键和null值
  Hashtable:线程安全,效率低,不允许有null键和null值。
  
2.list,set,Map是否都继承了Map接口?
  list,set接口不是继承自Map接口,而是继承自Collection接口。
  Map接口自己本身就是一个顶层接口。
 
                    
                
                
            
        
浙公网安备 33010602011771号