博客信息

集合框架Map应用

发布时间:『 2019-05-14 05:52』  博客类别:java基础  阅读(844)

应用一:

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

2、最后按年龄进行排序

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



应用二:

统计字符串中字符出现次数

小李飞刀_集合框架


小李飞刀_集合框架



相关代码


package com.javaxl;

import java.util.*;

/**
 * @author 小李飞刀
 * @site www.javaxl.com
 * @company
 * @create  2019-05-14 14:28
 */
public class MapDemo {

    public static void main(String[] args) {
//        method_student(args);
        String s = method_times("sdfsfsfwefjlksdjflksdlfsdlkjfslal");
        System.out.println(s);
    }

    /**
     * 字符串字符出现次数,字符从小到大排布
     *  sdfsfsfwefjlksdjflksdlfsdlkjfslal
     *  a(6)c(9)r(8)...
     * @param s
     */
    public static String method_times(String s) {
        char[] chars = s.toCharArray();
        Map<Character,Integer> m = new TreeMap<>();
        for (Character c : chars) {
            if(!m.containsKey(c)){
                m.put(c,1);
            }else {
                m.put(c,m.get(c)+1);
            }
        }
//        System.out.println(m);
        StringBuffer sb = new StringBuffer();
        Set<Map.Entry<Character, Integer>> entrySet = m.entrySet();
        for (Map.Entry<Character, Integer> entry : entrySet) {
            sb.append(entry.getKey()+"("+entry.getValue()+")");
        }
        return sb.toString();
    }

    /**
     * 学生区域化案例
     * @param args
     */
    public static void method_student(String[] args) {
//        Map<Map_Student,String> m = new HashMap<>();
//        Map<Map_Student,String> m = new TreeMap<>();
        Map<Map_Student,String> m = new TreeMap<>(new Map_Student_Comp());
        m.put(new Map_Student("java01",11),"beijing");
        m.put(new Map_Student("djava02",22),"shanghai");
        m.put(new Map_Student("ejava03",33),"guangzhou");
        m.put(new Map_Student("ajava04",44),"shenzheng");
        m.put(new Map_Student("ejava03",33),"xxx");
        m.put(new Map_Student("djava03",33),"ddd");
        m.put(new Map_Student("djava03",32),"eee");

        Set<Map.Entry<Map_Student, String>> entries = m.entrySet();
        Iterator<Map.Entry<Map_Student, String>> it = entries.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

    }

}

class Map_Student implements Comparable<Map_Student> {
    private String name;
    private int age;

    public Map_Student() {
    }

    public Map_Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public int hashCode() {
        return this.getName().hashCode()+this.age*16;
    }

    @Override
    public boolean equals(Object obj) {
        if(!(obj instanceof Map_Student))
            try {
                throw new ClassNotFoundException("java.lang.Object can not cast to com.javaxl.Map_Student");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }

        Map_Student map_student = (Map_Student)obj;
        return this.getName().equals(map_student.getName()) && this.getAge() == map_student.getAge();
    }

    @Override
    public String toString() {
        return "Map_Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public int compareTo(Map_Student o) {
        int num = this.getName().compareTo(o.getName());
        if(num == 0)
            return this.getAge() - o.getAge();
        return num;
    }
}

class Map_Student_Comp implements Comparator<Map_Student>{

    @Override
    public int compare(Map_Student o1, Map_Student o2) {
        int num = o1.getAge() - o2.getAge();
        if(num == 0)
            return o1.getName().compareTo(o2.getName());
        return num;
    }
}


注意:集合都是可以嵌套



关键字:     Java基础       集合框架       Map  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有