Map集合的实际应用

初识Map集合

1.map的方法归类
首先map集合中存放的都是一组组映射关系 key=value(键值,value值)
map增加的方法
put:
put(K key, V value) ;

  • 添加集合元素的同时,它可以编辑原有的元素
  • 如果说集合中没有key对应的value,那么集合中添加元素
  • 如果说集合中对应的key有value值,则代表替换原有的值
  • 添加元素时,如果键已经在集合中存在,那么后添加的值会覆盖原来的值,并且put方法会将原有的值返回
    案例 如下图:
    在这里插入图片描述

2.返回替换前的key对应的value的值
首先有两种方法:

  • entrySet:
    使用这种方法如下代码:
    Set<Entry<String, Object>> entrySet = map.entrySet(); for (Entry<String, Object> entry : entrySet) { System.out.println(entry.getKey()+"==="+ entry.getValue()); }
  • keySet:
 Set<String> keySet = map.keySet();
	   for (String key : keySet) {
		   System.out.println(key+"==="+ map.get(key));

(注:这两种方法是有区别的:entrySet跟迭代器的原理是一样的,当它遍历的时候会将key值,与value值一起遍历,比起keySet更具有实用性与方便性,entrySet本身map集合中。
keySet遍历只能将key值遍历,再通过key值取value值。)

Map删除的方法
删除使用的代码:map.clear();
案例:
在这里插入图片描述

执行完map.char()之后
结果为:
在这里插入图片描述
集合当中就会为空的。

Map集合的实际应用

首先我们设定一个需求:
		1、将学生作为键,地址作为值进行存储,名字年龄相同则被认定为一个人,最后输出
		2、最后按年龄进行排序
		3、需求改变、按姓名进行排序
	**完成第一个需求**
		* a.建立一个Student类,实例化作为Key添加到map集合中
		* b.对学生进行判重
		如以下的代码:
		1.建立一个实体类;

在这里插入图片描述

其次实例化作为Key添加到map集合中

Map<Student, String> map = new HashMap<>();
			
			map.put(new Student("liuting",18), "beijing");
			map.put(new Student("xuyangyang",20), "xingjiang");
			map.put(new Student("bb",14), "qwe");
			map.put(new Student("cc",112), "d");
			map.put(new Student("liuting",18), "beijing");
(注:在这里必须使用HashMap)
	**2.重写hashcode**
public int hashCode() {
		// TODO Auto-generated method stub
		return this.getName().hashCode()+this.getAge()*99;
	}(注:代码之后的数字并没有错误,运用实际比较重要)

3.进行判断重复
如下面代码

public boolean equals(Object obj) {
		Student stu =(Student) obj;
		return this.getAge()== stu.getAge()&&this.getName().equals(stu.getName());
	}

4.进行遍历:

使用entrySet的方法进行遍历

Set<Entry<Student,String>> entrySet = map.entrySet();
			for (Entry<Student, String> entry : entrySet) {
				
				System.out.println(entry.getKey()+"---"+ entry.getValue());
			}

返回一个equals判断重复的方法
之后得到结果如下:
在这里插入图片描述

2.按照需求进行年龄排序

1.首先对实体类用Compreble接口进行实现
class Student implements Comparable<Student>

再重写一个方法对年龄进行判断,先判断主要条件再判断次要条件,如以下代码(注:以免出现不符合逻辑的情况)

public int compareTo(Student o) {
		// TODO Auto-generated method stub
		int num = this.getAge()-o.getAge();
		if(num==0) {
			return this.getName().compareTo(o.getName());
		}
		return num;
	}

得到结果:
在这里插入图片描述

3.按照需求名字进行排序
1.于按年龄实现排序一样我们需要使用另外一个接口:comparetor

用实体类继承这个接口,再对姓名和年龄进行判断,先判断主要条件,再判断次要条件(注:以免出现不符合逻辑的情况)

class StuComp implements Comparator<Student>{

	@Override
	public int compare(Student o1, Student o2) {
		// TODO Auto-generated method stub
		int num =o1.getName().compareTo(o2.getName());
		if(num==0) {
			return o1.getAge()-o2.getAge();
			
		}
		return num;
	}

得到结果:

在这里插入图片描述

统计字符再字符串中出现的字数
首先我们思考:我们要对字符串进行统计还有排序
1.统计功能:1,将字符串转为字符数组,将这个字符串中的字符当作map集合中的key将出现value值:

	Map<Character, Integer> map = new HashMap<>();

2.当第一个字符出现的时候,那么用它再集合中进行寻找,返回值必然为null
比如:

System.out.println(map.get('s'));(返回值为null)

之后将该字符对应的值改为1,如果说该字符不是第一次出现,该字符对应的值不为null,然后应该加1

		map.put('s', 1);(返回值为1)

封装一个字符串数组:对字符串数组进行遍历
在这里插入图片描述

在这里插入图片描述

得到最后的结果为:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的Map是一种数据结构,它允许我们将键-值对存储到一个集合中。在实际应用中,我们经常需要遍历Map集合,以便获取其中的数据。 Map提供了许多遍历方式,可以根据具体需求选择合适的方法。下面是常见的三种遍历方式: 1. 使用for-each循环遍历Map集合 这是一种简单且常用的遍历方式,它基于foreach循环,对Map中的每一对键值对进行迭代操作。代码如下: Map<String, Object> map = new HashMap<>(); map.put("username", "tom"); map.put("age", 20); map.put("gender", "male"); for (Map.Entry<String, Object> entry : map.entrySet()) { System.out.println("key:" + entry.getKey() + " value:" + entry.getValue()); } 2. 使用Iterator迭代器遍历Map集合 此方法适用于需要对Map中的键值对进行删除、修改等操作的情况下,因为使用迭代器可以安全地对Map进行遍历和操作,避免了ConcurrentModificationException异常的出现。代码如下: Map<String, Object> map = new HashMap<>(); map.put("username", "tom"); map.put("age", 20); map.put("gender", "male"); Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, Object> entry = it.next(); System.out.println("key:" + entry.getKey() + " value:" + entry.getValue()); } 3. 使用Lambda表达式遍历Map集合 如果使用了Java8及以上版本,可以使用Lambda表达式的形式遍历Map集合,用起来相对简单便捷。代码如下: Map<String, Object> map = new HashMap<>(); map.put("username", "tom"); map.put("age", 20); map.put("gender", "male"); map.forEach((k, v) -> System.out.println("key:" + k + " value:" + v)); 以上三种遍历方式,可以根据实际情况选择合适的方式来处理Map数据。在使用过程中,需要注意是否需要进行遍历操作时对Map中的键值对进行处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值