集合框架__【Map集合】【keySet】【entrySet】【Map.Entry】


Map集合

该集合存储键值对,一对一对存储,而且要保证键的唯一性
1,添加。
put(K key, V value)当往同一个键上存入了两个值,原有的值会被新的值替换,并由put方法返回
putAll(Map<? extends K,? extends V> m) 
2,删除。
clear() 
remove(Object key) 
3,判断。
containsValue(Object value) 
containsKey(Object key) 
isEmpty() 
4,获取。
get(Object key)//可以通过get方法的返回值来判断一个件是否存在,是否为null
size() 
values() 
重点:
entrySet() 
keySet() 
Map的子类
|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。在jdk1.0.版本出现,效率低。
|--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。用于替代hashtable,出现于jdk1.2.效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
Map类似于Set,Set底层就是使用了Map集合

常见操作示例

import java.util.*;
class  MapDemo
{
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
	public static void main(String[] args) 
	{
		Map<String,String> map = new HashMap<String,String>();
		map.put("01","haha1");
		map.put("02","haha2");
		map.put("03","haha3");
		map.put("03","ha哈哈哈");//当往同一个键上存入了两个值,原有的值会被新的值替换,并由put方法返回
	
		sop("containsKey:"+map.containsKey("001"));
		//sop("remove: "+map.remove("02"));
		sop("get: "+map.get("020"));//没有则返回null
		map.put("04",null);
		sop("get: "+map.get("04"));//可以通过get方法的返回值来判断一个件是否存在,是否为null
		sop(map);//获取map集合中所有的值
	}
}

map集合两种取出方式:keySet和entrySet

1,keySet:将map集合转成set集合再通过迭代器取出

————即:将map中所有的键存入到Set集合。因为Set具备迭代器,可以通过迭代方式获取所有的键,再根据get方法,获取每个键对应的值

2,entrySet:
————Set<Map.Entry<k,v>>  entrySet:将map集合中的映射关系存入到set集合中;这个关系的数据类型是Map.Entry,
Map.Entry中的 Entry是一个接口,是Map接口的一个内部接口
示例

import java.util.*;
class MapDemo2 
{
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
	public static void main(String[] args) 
	{
		Map<String,String> map = new HashMap<String,String>();
		map.put("01","haha01");
		map.put("04","haha04");
		map.put("03","haha03");
		map.put("02","haha02");
//entrySet		
		Set<Map.Entry<String,String>> entrySet = map.entrySet();//将Map集合中映射关系取出,存入到Set集合
		Iterator<Map.Entry<String,String>> it = entrySet.iterator();
		while (it.hasNext())
		{
			Map.Entry<String,String> me = it.next();
			String key = me.getKey();		//getKey和getValue是Map.Entry<K,V>的方法
			String value = me.getValue();	//
			sop("key= "+key+" , value= "+value);
		}
//keySet
		Set<String> keySet = map.keySet();//①获取map集合所有键的Set集合,keySet();
		Iterator<String> it = keySet.iterator();//②通过Set集合迭代器获取键值
		while (it.hasNext())
		{
			String key = it.next();
			String value = map.get(key);//③通过键值获取其对应的值
			sop("key= "+key+" ,value= "+value);
		}
	}
}

Map.Entry

 Entry是Map接口的一个内部接口

在源码中的实现示例:

interface Map
{
	public static interface Entry	//内部接口,static是定义在局部的,所以看到静态接口一定是内部接口
	{
		public abstract Object getKey();
		public abstract Object getValue();
	}
}
class HashMap implements Map
{
	class Haha implements Map.Entry	//内部类,实现接口的内部类
	{
		public  Object getKey(){};
		public  Object getValue(){};
	}
}


Map.Entry表示一种数据类型,即键值对的映射关系,用一个不恰当的比喻通俗点来说:Map中的元素就像是一对夫妻,存入到Set中的Map.Entury就相当于他们的一本结婚证

图解:








  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值