Java集合框架之双列Map集合简介

对于Map集合,它和Collection集合不同在于:Collection体系下的集合为单列集合,而Map体系下的集合为双列集合

Map集合:无序,由Key(键)和Value(值)组成
在Map集合中一个键对应一个值,并且键不能重复,但值可以重复出现
Map是一个接口,所以无法直接创建实例化对象,所以我们需要根据其子类来创建实例化对象
Java集合框架之双列Map集合简介_第1张图片
上图为Map中两个常用的子类
HashMap:散列的键值对,常用
TreeMap:树状键值队
通过上述两个子类我们就可以创建实例化对象了

		//通过HashMap创建实例化对象
		Map<String,Integer> map = new HashMap<String,Integer>();

上述我们传递泛型指定类型的时候和Collection的集合相比,多了一个类型;左边的String指定的是Key(键)的数据类型,右边的Integer指定的是Value(值)的数据类型

我们添加数据到Map集合中需要使用put(K key,V value)方法

		//通过HashMap创建实例化对象
		Map<String,Integer> map = new HashMap<String,Integer>();
		//添加数据到Map集合中
		map.put("G1", 50);
		map.put("G2", 100);
		map.put("G3", 200);
		//打印集合内容
		System.out.println(map);//打印结果:{G1=50, G2=100, G3=200}

通过put方法我们就把数据添加到了集合中,打印出来的结果可以得知map存储的数据确实是键值对

存入数据后我们应该怎么去拿到呢
这就要通过**get(Object obj)**方法今天拿取,但是我们需要给出键去拿值

		//通过HashMap创建实例化对象
		Map<String,Integer> map = new HashMap<String,Integer>();
		//添加数据到Map集合中
		map.put("G1", 50);
		map.put("G2", 100);
		map.put("G3", 200);
		//拿出G2的值
		System.out.println(map.get("G2"));//打印结果:100

通过get我们拿到了Key键为G2的值

有时候我们并不知道Key键知否存在,又应该怎么判断呢
可以通过Map集合中的**containsKey(Object obj)**方法来判断是否存在指定的键

		//通过HashMap创建实例化对象
		Map<String,Integer> map = new HashMap<String,Integer>();
		//添加数据到Map集合中
		map.put("G1", 50);
		map.put("G2", 100);
		map.put("G3", 200);
		//判断是否存在G2这个键
		System.out.println(map.containsKey("G2"));//打印结果:true
		//判断是否存在G6这个键
		System.out.println(map.containsKey("G6"));//打印结果:false

通过打印结果可以看到当存在时返回true,当不存在时返回false;我们可以通过这个方法判断是否存在键,然后可以对接下来需要做的事进行一个判断

可以查看是否存在某个键,那就一定有判断值的**containsValue(Object obj)**方法

		//通过HashMap创建实例化对象
		Map<String,Integer> map = new HashMap<String,Integer>();
		//添加数据到Map集合中
		map.put("G1", 50);
		map.put("G2", 100);
		map.put("G3", 200);
		//判断是否存在50这个值
		System.out.println(map.containsValue(50));//打印结果:true
		//判断是否存在300这个值
		System.out.println(map.containsValue(300));//打印结果:false

上述我们可以获取到值,但是无法获取到键或者遍历Map集合
我们可以通过keySet获取到键的Set集合,然后进行遍历

		//通过HashMap创建实例化对象
		Map<String,Integer> map = new HashMap<String,Integer>();
		//添加数据到Map集合中
		map.put("G1", 50);
		map.put("G2", 100);
		map.put("G3", 200);
		//获取到键的Set集合
		Set<String> set = map.keySet();
		//通过增强for循环进行遍历
		for(String s : set) {
			System.out.println(s + "的值为:" + map.get(s));
		}
		/*
		 * 打印结果:
		 * G1的值为:50
		 * G2的值为:100
		 * G3的值为:200
		 */

这样我们就可以获取到键了,但是是以集合的方式获取到的

我们还可以吧Map集合中的键和值都放入集合中进行遍历
这里我们就需要借助entrySet()方法获取到键值整体的集合,然后进行遍历

		//通过HashMap创建实例化对象
		Map<String,Integer> map = new HashMap<String,Integer>();
		//添加数据到Map集合中
		map.put("G1", 50);
		map.put("G2", 100);
		map.put("G3", 200);
		//获取到键值的Set集合
		Set<Entry<String,Integer>> set = map.entrySet();
		//通过增强for循环进行遍历
		for(Entry<String,Integer> e : set) {
			System.out.println(e.getKey() + "的值为:" + e.getValue());
		}
		/*
		 * 打印结果:
		 * G1的值为:50
		 * G2的值为:100
		 * G3的值为:200
		 */

Map.Entry是一个接口,我们可以通过他里面的getKey()获取键,getValue()获取值;这样也能达到遍历集合,拿到键和值的作用

今天的分享就到这里了,如果有错误的地方,欢迎大家来指点!

你可能感兴趣的:(java学习)