Map集合的实际应用

    xiaoxiao2022-07-06  193

    集合框架Map

    初识Map集合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)

    封装一个字符串数组:对字符串数组进行遍历

    得到最后的结果为:

    最新回复(0)