【JavaSE】Java基础语法(二十九):Map集合

68 阅读3分钟

文章目录


\

在这里插入图片描述
\

1. Map集合概述和特点

  • Map集合概述
interface Map<K,V> K:键的类型;V:值的类型
  • Map集合的特点

    • 双列集合,一个键对应一个值
    • 键不可以重复,值可以重复
  • Map集合的基本使用

public class MapDemo01 {
	public static void main(String[] args) {
		//创建集合对象
		Map<String,String> map = new HashMap<String,String>();
		
		//V put(K key, V value) 将指定的值与该映射中的指定键相关联
		map.put("001","刘亦菲");
		map.put("002","宋祖儿");
		map.put("003","林黛玉");
		map.put("003","江疏影");
		
		//输出集合对象
		System.out.println(map);
	}
}

\

2. Map集合的基本功能

  • 方法介绍
    在这里插入图片描述

\

  • 示例代码
public class MapDemo02 {
	public static void main(String[] args) {
		//创建集合对象
		Map<String,String> map = new HashMap<String,String>();
		//V put(K key,V value):添加元素
		map.put("张无忌","赵敏");
		map.put("郭靖","黄蓉");
		map.put("杨过","小龙女");
		//V remove(Object key):根据键删除键值对元素
		// System.out.println(map.remove("郭靖"));
		// System.out.println(map.remove("郭襄"));
		//void clear():移除所有的键值对元素
		// map.clear();
		//boolean containsKey(Object key):判断集合是否包含指定的键
		// System.out.println(map.containsKey("郭靖"));
		// System.out.println(map.containsKey("郭襄"));
		//boolean isEmpty():判断集合是否为空
		// System.out.println(map.isEmpty());
		//int size():集合的长度,也就是集合中键值对的个数
		System.out.println(map.size());
		//输出集合对象
		System.out.println(map);
	}
}

\

3. Map集合的获取功能【应用】

  • 方法介绍
    在这里插入图片描述
  • 示例代码
public class MapDemo03 {
	public static void main(String[] args) {
		//创建集合对象
		Map<String, String> map = new HashMap<String, String>();
		//添加元素
		map.put("张无忌", "赵敏");
		map.put("郭靖", "黄蓉");
		map.put("杨过", "小龙女");
		//V get(Object key):根据键获取值
		// System.out.println(map.get("张无忌"));
		// System.out.println(map.get("张三丰"));
		//Set<K> keySet():获取所有键的集合
		// Set<String> keySet = map.keySet();
		// for(String key : keySet) {
		// System.out.println(key);
		// }
		//Collection<V> values():获取所有值的集合
		Collection<String> values = map.values();
		for(String value : values) {
		System.out.println(value);
		}
	}
}

\

4. Map集合的遍历(方式1)

  • 遍历思路

    • 我们刚才存储的元素都是成对出现的,所以我们把Map看成是一个夫妻对的集合
    • 把所有的丈夫给集中起来
    • 遍历丈夫的集合,获取到每一个丈夫
    • 根据丈夫去找对应的妻子

\

  • 步骤分析

    • 获取所有键的集合。用keySet()方法实现
    • 遍历键的集合,获取到每一个键。用增强for实现
    • 根据键去找值。用get(Object key)方法实现

\

  • 代码实现
public class MapDemo01 {
	public static void main(String[] args) {
		//创建集合对象
		Map<String, String> map = new HashMap<String, String>();
		
		//添加元素
		map.put("张无忌", "赵敏");
		map.put("郭靖", "黄蓉");
		map.put("杨过", "小龙女");
		
		//获取所有键的集合。用keySet()方法实现
		Set<String> keySet = map.keySet();
		
		//遍历键的集合,获取到每一个键。用增强for实现
		for (String key : keySet) {
			//根据键去找值。用get(Object key)方法实现
			String value = map.get(key);
			System.out.println(key + "," + value);
		}
	}
}

\

5. Map集合的遍历(方式2)

public class MapDemo02 {
	public static void main(String[] args) {
		//创建集合对象
		Map<String, String> map = new HashMap<String, String>();
		
		//添加元素
		map.put("张无忌", "赵敏");
		map.put("郭靖", "黄蓉");
		map.put("杨过", "小龙女");
		
		//获取所有键值对对象的集合
		Set<Map.Entry<String, String>> entrySet = map.entrySet();
		
		//遍历键值对对象的集合,得到每一个键值对对象
		for (Map.Entry<String, String> me : entrySet) {
			//根据键值对对象获取键和值
			String key = me.getKey();
			String value = me.getValue();
			System.out.println(key + "," + value);
		}
	}
}

\

6. map四种遍历方式

import java.util.*;
public class Test{
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("1", "value1");
		map.put("2", "value2");
		map.put("3", "value3");
		
		//第一种:普遍使用,二次取值
		System.out.println("通过Map.keySet遍历key和value:");
		for (String key : map.keySet()) {
			System.out.println("key= "+ key + " and value= " + map.get(key));
		}
		
		//第二种
		System.out.println("通过Map.entrySet使用iterator遍历key和value:");
		Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, String> entry = it.next();
			System.out.println("key= " + entry.getKey() + " and value= " +
			entry.getValue());
		}
		
		//第三种:推荐,尤其是容量大时
		System.out.println("通过Map.entrySet遍历key和value");
		for (Map.Entry<String, String> entry : map.entrySet()) {
			System.out.println("key= " + entry.getKey() + " and value= " +
			entry.getValue());
		}
		
		//第四种
		System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
		for (String v : map.values()) {
			System.out.println("value= " + v);
		}
		
		//
		// 遍历TreeMap集合
		tm.forEach(
			(String key, String value)->{
			System.out.println(key + "---" + value);
			}
		);
	}
}

\

在这里插入图片描述