参考答案
班级有不同数量的学生,用map保存;循环取出学生信息
package com.qzcsbj.gift.test;
import java.util.*;
public class Test {
public static void main(String[] args) {
// 创建对象
Student s1 = new Student("tom", 3);
Student s2 = new Student("jack", 3);
Student s3 = new Student("liming", 3);
// 创建HashMap对象
HashMap<String, ArrayList<Student>> stringArrayListHashMap = new HashMap<>();
// 创建班级
String cname1 = "贝儿班";
String cname2 = "苗苗班";
// 学生放入列表
ArrayList<Student> students1 = new ArrayList<>();
students1.add(s1);
students1.add(s2);
ArrayList<Student> students2 = new ArrayList<>();
students2.add(s3);
// 列表放入班级
stringArrayListHashMap.put(cname1,students1);
stringArrayListHashMap.put(cname2,students2);
// 遍历方式一
Set<String> cname = stringArrayListHashMap.keySet();
for (String name:cname){
System.out.println("=======班级:"+name+"=======");
ArrayList<Student> li = stringArrayListHashMap.get(name);
for (Student s:li){
System.out.println(s);
}
}
System.out.println("\n*************************************\n");
// 遍历方式二
Set<Map.Entry<String, ArrayList<Student>>> entries = stringArrayListHashMap.entrySet();
for(Map.Entry<String, ArrayList<Student>> entry:entries){
System.out.println("=======班级:"+entry.getKey()+"=======");
ArrayList<Student> li =entry.getValue();
for (Student s:li){
System.out.println(s);
}
}
}
}
统计一个字符串中每个字符出现的次数,保存到HashMap集合中
package com.qzcsbj;
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
String str = "qzcsbj-*?>>>666";
Map<Character, Integer> map=new HashMap<Character, Integer>();
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
if(map.containsKey(c)){
map.put(c, map.get(c)+1);
}else{
map.put(c, 1);
}
}
System.out.println(map);
}
}
统计一个字符串中每个字符出现的次数,保存到HashMap集合中,通过排序,打印输出次数最多的前三个字符及次数
package com.qzcsbj;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class CcollectionsPractice {
public static void main(String[] args) {
String str = "qzcsbj-*?>>>666j";
Map<String, Integer> map = new HashMap<String, Integer>();
for (int i = 0; i < str.length(); i++) {
String c = str.charAt(i) + "";
map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1);
}
System.out.println(map);
// 获取所有键值对的集合
Set<Map.Entry<String, Integer>> entries = map.entrySet();
ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(entries);
// 自定义比较器,第二个参数是匿名内部类
Collections.sort(list,new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1,
Map.Entry<String, Integer> o2) {
if(o1.getValue()>o2.getValue()){
return -1;
}else if(o1.getValue()<o2.getValue()){
return 1;
}
return 0;
}
});
System.out.println(list);
System.out.println("出现次数最多的前三个字符及次数:");
for(int i=0;i<3;i++){
Map.Entry<String, Integer> entry = list.get(i);
System.out.println(entry.getKey()+"="+entry.getValue());
}
}
}
__EOF__
本文作者:持之以恒(韧)