J2EE集合框架之Map

J2EE集合框架之Map

1.什么是Map集合

1.1 概述:

  • Map是一种键值对(key-value)的集合,Map集合中每一个元素都包含一个键对象和一个值对象,其中键Key对象不允许重复,而值Value对象可以重复。
  • Map集合没有继承Collection接口,其提供的是key到value的映射,Map中不能包含相同的key值,每个key只能影射一个相同的value,key值还决定了存储对象在映射中的存储位置。

1.2 图解:

在这里插入图片描述

1.3 Map集合和Collection集合的区别:

  • 数据结构:Collection集合主要是由一组单一类型的对象构成,而Map集合是由键值对(key-value)构成的对象组成。
  • 元素的排序:Collection集合中的元素是无序的,而Map集合的键值对是按照某种顺序进行排列的。
  • 元素的访问方式:Collection集合只能按照特定的顺序依次读取元素,而Map集合可以通过键直接访问元素。
  • 元素的重复:Collection集合中允许有重复的元素,而Map集合不允许有重复的键。
  • 方法:Collection集合主要包括增加、删除、修改、查找等操作方法,而Map集合除此之外还包括获取键、获取值、获取键值对等相关方法。

**总结:**相比较两种集合类型,Collection集合更适合和与存储较为简单的数据对象,这样的话可以大大提高开发效率;而相对于Map集合更适合保存键值对(key-value)这种特殊形式的数据,对于这种特殊形式数据的话Map更方便。

2. Map集合的遍历方式:(未包括泛型)

2.1 先获取map集合的所有key再获取值

package com.YX.Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo1 {
	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put(1, "君易");
		map.put(2, "木易");
		map.put(3, "栀龍");
		// 1.先获取map集合的键,在获取值
		Set keyset = map.keySet();
		for (Object key : keyset) {
			System.out.println("key:" + key + ";value=" + map.get(key));
		}
	}
}

输出结果

在这里插入图片描述

2.2 得到map集合的映射关系

package com.YX.Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Demo1 {
	public static void main(String[] args) {
		Map map = new HashMap<>();
		map.put(1, "君易");
		map.put(2, "木易");
		map.put(3, "栀龍");

		// 2.得到map集合的映射关系
		Set entrySet = map.entrySet();
		for (Object object : entrySet) {
			Map.Entry entry = (Entry) object;
			System.out.println(entry.getKey() + ":" + entry.getValue());
		}
	}
}

输出结果:
在这里插入图片描述

3.Map集合的遍历方式:(包括泛型)

3.1 增强for循环遍历(foreach)

package com.YX.Map;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class Demo2 {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();
		map.put(1, "君易");
		map.put(2, "木易");
		map.put(3, "栀龍");

//		1.foreach遍历
		for (Map.Entry<Integer, String> entry : map.entrySet()) {
		    System.out.println(entry.getKey() + ": " + entry.getValue());
		}
	}
}

输出结果

在这里插入图片描述

3.2 迭代器遍历iterator

package com.YX.Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class Demo2 {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();
		map.put(1, "君易");
		map.put(2, "木易");
		map.put(3, "栀龍");

		 1.foreach遍历
		// for (Map.Entry<Integer, String> entry : map.entrySet()) {
		// System.out.println(entry.getKey() + ": " + entry.getValue());
		// }
		// 2.迭代器遍历
		Iterator<Entry<Integer, String>> it = map.entrySet().iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}
	}
}

输出结果

在这里插入图片描述

3.3 遍历键、值、或者键值对的集合:

package com.YX.Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class Demo2 {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();
		map.put(1, "君易");
		map.put(2, "木易");
		map.put(3, "栀龍");	
//		3.遍历键、值、或者键值对的集合:
//		可以使用Map集合的keySet()、values()、entrySet()方法获得键、值、或者键值对的集合,然后使用for-each循环或迭代器遍历。
		// 遍历键值对
		for (Map.Entry<Integer, String> entry : map.entrySet()) {
		    System.out.println(entry.getKey() + ": " + entry.getValue());
		}
	}
}

输出结果

在这里插入图片描述

4. Map集合的基本使用(增删改查)

package com.YX.Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class Demo3 {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();
		map.put(1, "君易");
		map.put(2, "木易");
		map.put(3, "栀龍");

		// 原来数据
		for (Map.Entry<Integer, String> entry : map.entrySet()) {
			System.out.println(entry.getKey() + ": " + entry.getValue());
		}
		// 根据对应的键来覆盖对应的值。
		map.put(1, "俊逸");
		// 修改后的结果
		System.out.println("修改后的=======================================================================");
		for (Map.Entry<Integer, String> entry : map.entrySet()) {
			System.out.println(entry.getKey() + ": " + entry.getValue());
		}

	}
}

修改后输出集合的结果

在这里插入图片描述

package com.YX.Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class Demo3 {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();
		map.put(1, "君易");
		map.put(2, "木易");
		map.put(3, "栀龍");

		// 原来数据
		for (Map.Entry<Integer, String> entry : map.entrySet()) {
			System.out.println(entry.getKey() + ": " + entry.getValue());
		}
		// 根据对应的键来删除对应的数据。
		map.remove(1);
		// 删除后的结果
		System.out.println("删除后的=======================================================================");
		for (Map.Entry<Integer, String> entry : map.entrySet()) {
			System.out.println(entry.getKey() + ": " + entry.getValue());
		}
	}
}

输出结果

在这里插入图片描述

5.Map集合的综合运用(统计字符串中的字符出现的次数)

package com.YX.Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class Demo3 {
	public static void main(String[] args) {
		// 定义一个字符串
		String str = "fghjhbvsccsc";
		// 截取每一个字符到字符数组中
		char[] charArray = str.toCharArray();
		// 存放字符与出现次数对应关系的Map集合容器
		Map<Character, Integer> map = new HashMap<Character, Integer>();
		for (char c : charArray) {// foreach遍历字符数组
			Integer val = map.get(c);//定义变量代表出现次数
			if (val != null) {//判断次数不能为空
				map.put(c, val + 1);//如果字符重复了则该次数加1
			} else {
				map.put(c, 1);//如果字符没重复则次数默认为1。
			}
		}
//		遍历Map集合
		for (Entry<Character, Integer> entry:map.entrySet()) {
			System.out.println(entry.getKey()+"出现了"+entry.getValue()+"次");
		}
	}
}

显示结果

在这里插入图片描述

**总结:**先将一个字符串截取一个个的字符存储在字符数组中,然后定义一个Map集合存储对应的字符和出现的次数,其次遍历字符数组判断截取的每一个字符是否重复出现,如果有重复出现的则将次数+1,若没有则将次数默认设置为1。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值