应用一:
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;
}
}
注意:集合都是可以嵌套
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有