Java学习总结——Map接口概述

 一、Map借口继承树

Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value

Map 中的key 和  value 都可以是任何引用类型的数据

Map 中的 key Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()equals()方法。

常用String类作为Map的“键”。

key 和value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 value。


Map存储结构图

横向看的话:每一个行键值对都是一个Entry。

纵向看的话:左边是一个集合键,不可重复,使用Set来存放的。右边是值,是用Collection来存的,可重复的。

二、Map的常用实现类HashMap及主要方法的使用

Map常用的方法:

Object put(Object key,Object value):向Map中添加一个元素 。map可以添加键为null,值为null

  Object remove(Object key):按照指定的key删除此key-value

  void putAll(Map t)

  void clear():清空 Object。

  get(Object key):获取指定key的value值。若无此key,则返回null。

  boolean containsKey(Object key)

  boolean containsValue(Object value)

  int size():返回集合的长度 boolean。

  isEmpty()

  boolean equals(Object obj)

 

  HashMap:

          1.key是用Set来存放的,不可重复。value是用Collection来存放的,可重复。

            一个key-value对,是一个Entry。所有的Entry是用Set存放的,也是不可重复的。

     2.向HashMap中添加元素时,会调用key所在类的equals()方法,判断两个key是否相同。若相同 则只能添加进后添加的那个元素。

三、以HashMap为例谈Map的遍历

       如何遍历Map:有三种方法 .

       1、Set  keySet():遍历所有的键

       2、Collection values() :遍历所有的值 Set

       3、entrySet():遍历键值对

   hashMap可以存放null键,null值。

      

 

      // 1.遍历key

	@Test
	public void testKey(){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("AA", 123);
		map.put("BB", 567);
		map.put("CC", 890);
		map.put(null, null);
		
		Set<String> s = map.keySet();
		
		for (String s1 : s) {
			System.out.println(s1);
		}
	}

结果:



      // 2.遍历value

正确的方法:使用迭代器Iterator实现集合的遍历

      

@Test
	public void testValues(){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("AA", 123);
		map.put("BB", 567);
		map.put("CC", 890);
		map.put(null, null);
		
		Collection<Object> col = map.values();
		
		//正确的方法:使用迭代器Iterator实现集合的遍历
		 Iterator<Object> it = col.iterator();
		 while (it.hasNext()) {
			System.out.println(it.next());
		}
	}

结果:


      // 3.如何遍历key-value

      // 方式一:通过键,获取值  

      Set set3 = map.keySet();

      for(Object obj:set3){

        System.out.println(obj+"====>"+map.get(obj));

      }

      /*

      AA====>123

      BB====>567

      CC====>890

      */

      // 方式二:通过entrySet()方法, Set<Map.Entry<K,V>>对象接收

@Test
	public void testEntrySet(){
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("AA", 123);
		map.put("BB", 567);
		map.put("CC", 890);
		map.put(null, null);
		
		Set<Map.Entry<String, Object>> s = map.entrySet();   //遍历键值对
		
		for (Map.Entry<String, Object> o : s) {
			System.out.println(o.getKey()+"==>"+o.getValue());
		}
	}

结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xinlianluohan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值