集合框架Map

    xiaoxiao2022-07-07  143

    集合框架Map

    集合框架Map介绍Map集合的一些应用

    集合框架Map介绍

    map集合中存放的都是一组组映射关系,一个键对应一个值,并且键不能重复。 它有三个子类:Hashtable,HashMap,TreeMap。我们常用的也就是HashMap和TreeMap。 几个主要的方法就是put,entrySet,keySet.

    1.put:添加集合元素的同时,他可以编辑原有的元素.如果说集合中没有key对应的value,那么就往集合中添加元素.如果说集合中对应的key有value值,则代表替换原有的值。返回值为替换前key对应的value值。 2.entrySet:map集合没有自己的迭代器,于是我们就得用到entrySet方法进行集合的遍历, 可以把map集合里的键和值一起取出来 3.keySet:可以把map集合里的键取出来,也是可以用来遍历map集合的。 还有一些方法请点击链接查看在线文档

    Map集合的一些应用

    将学生作为键,地址作为值进行存储,名字年龄相同则被认定为一个人,最后输出。

    这里我们就要用到HashMap,建立一个student类,实例化作为key添加到map集合,然后对学生进行判重 判重的方法和HashSet的判重方法一样。

    然后按年龄进行排序

    这里因为要进行排序,所以就要用到TreeMap。方法也和TreeSet的方法一样。 先要让对象具有比较方式,实现Comparable接口,重写compare方法。

    class Student implements Comparable<Student>{} @Override public int compareTo(Student o) { // TODO Auto-generated method stub System.out.println(1); int num=this.getAge()-o.getAge(); if(num==0) { return this.getName().compareTo(o.getName()); } return num; }

    3.需求改变、按姓名进行排序

    这里我们要自己定义一个比较器,定义一个类,实现comparator接口,实现compare方法

    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; } }

    让集合自身具备比较在集合初始化时,就有了比较方式。

    Map<Student, String> map=new TreeMap<>(new StuComp());

    4.统计一个字符串中字符出现次数 将字符串转为字符串数组,将这个字符串中的字符仿作map集合里的key,将出现的次数作为value值。当字符第一次出现的时候,用它在集合中进行寻找,返回值必然为null,之后将该字符对应的值改为1。如果该字符不是第一次出现,该字符对应的值加一。

    public class HashMapDemo { public static void main(String[] args) { String str="sfgsregsrrfgsreggergsegdssshtjd"; str=cishu(str); System.out.println(str); } /** * 字符出现次数统计功能 * @param str * @return */ public static String cishu(String str) { char[] charArray = str.toCharArray(); //map集合中的泛型要使用包装类,或者是引用数据类型 Map<Character, Integer> map=new TreeMap<>(); for (char c : charArray) { Integer value=map.get(c); if(value==null) { map.put(c, 1); } else { map.put(c, ++value); } } StringBuffer sb=new StringBuffer(); Set<Entry<Character, Integer>> entrySet = map.entrySet(); for (Entry<Character, Integer> entry : entrySet) { sb.append(entry.getKey()+"("+entry.getValue()+")"); } return sb.toString(); } }
    最新回复(0)