Map
HashMap
练习一
需提前定义学生类,并重写HashMap方法(不然无法覆盖)
public class MapDemo4 {public static void main(String[] args) {//1.创建HashMap对象HashMap<Student,String> hm=new HashMap<>();//2、创建3个学生对象Student s1=new Student("zhangsan",23);Student s2=new Student("lisi",24);Student s3=new Student("wangwu",25);Student s4=new Student("wangwu",25);hm.put(s1,"天津");hm.put(s2,"北京");hm.put(s3,"福建");//被覆盖hm.put(s4,"山东");Set<Student> keys =hm.keySet();for (Student key : keys) {String value=hm.get(key);System.out.println(key+"="+value);}}
}
练习2
package day12;import java.util.*;public class MapDemo5 {public static void main(String[] args) {//1.需要先让同学们投票//定义一个数组,存储四个景点String[] arr={"A","B","C","D"};//利用随机数模拟80个同学的投票,并把投票的结果存储起来ArrayList<String> list=new ArrayList<>();Random r=new Random();for(int i=0;i<80;i++){int index=r.nextInt(arr.length);list.add(arr[index]);}//2.如果要统计的东西比较多,不方便使用计数器思想//我们可以定义map集合,利用集合进行统计HashMap<String,Integer> hm=new HashMap<>();for (String name : list) {if(hm.containsKey(name)){int count=hm.get(name);count++;//把新的次数再次添加到集合当中hm.put(name,count);}else{//不存在hm.put(name,1);}}System.out.println(hm);//3.求最大值int max=0;Set<Map.Entry<String,Integer>> entries=hm.entrySet();for (Map.Entry<String, Integer> entry : entries) {int count=entry.getValue();if(count>max){max=count;}}System.out.println(max);//4.判断哪个景点的次数和最大值一样,如果一样,打印出来for (Map.Entry<String, Integer> entry : entries) {int count=entry.getValue();if(count==max){System.out.println(entry.getKey());}}}
}
LinkedHashMap
TreeMap
TreeMap练习:
package day12;import java.util.TreeMap;public class TreeMapDemo {public static void main(String[] args) {/** 新的统计思想:利用Map集合进行统计* 如果题目中没有要求对结果进行排序,默认使用HashMap* 如果题目中要求对结果进行排序,请使用TreeMap** 键:表示要统计的内容* 值:表示次数* *///1.定义字符串String s="aababcabcdabcde";//2.创建集合TreeMap<Character,Integer> tm=new TreeMap<>();//3.遍历字符串得到里面的每一个字符for (int i = 0; i < s.length(); i++) {//拿着c到集合中判断是否存在//存在,表示当前字符又出现了一次//不存在,表示当前字符是第一次出现char c=s.charAt(i);if(tm.containsKey(c)){//存在//先把已经出现的次数拿出来int count=tm.get(c);//当前字符又出现了一次count++;//把自增之后的结果添加到集合当中tm.put(c,count);}else{//不存在tm.put(c,1);}}//4.遍历集合,并按照指定格式进行拼接//a(5)b(4)……//此处使用lambda表达式进行遍历//使用StringBuilder进行拼接StringBuilder sb=new StringBuilder();tm.forEach((key,value)-> sb.append(key).append("(").append(value).append(")"));System.out.print(sb);}
}