模拟测试:
//怎样将一个集合里面的数据按照某个参数进行分类?
public static void main(String[] args) {
//假设有个学生的实体类 Student.class
//定义几个不同的学生
Student stu1 = new Student(1, "小明", "小学(1)班", 6, "男");
Student stu2 = new Student(2, "Suny", "小学(2)班", 7, "男");
Student stu3 = new Student(3, "小花", "小学(3)班", 7, "女");
Student stu4 = new Student(4, "Tony", "小学(3)班", 5, "女");
Student stu5 = new Student(5, "Hello", "小学(3)班", 7, "女");
Student stu6 = new Student(6, "小红", "小学(2)班", 7, "女");
//定义一个集合存放学生
List<Student> students = new ArrayList<>();
students.add(stu1);
students.add(stu2);
students.add(stu3);
students.add(stu4);
students.add(stu5);
students.add(stu6);
//要求:根据班级分类
//开始处理
//定义一个map存放分类后的数据
Map<String, Object> params = new HashMap();
//循环处理数据
for (Student student : students) {
//班级名称
String classname = student.getClassname();
//存放同一班级的学生
List<Student> list = null;
Object objectList = MapUtils.getObject(params, classname);
if (null == objectList) {
list = new ArrayList<>();
} else {
list = (List<Student>) objectList;
}
//将数据放到map里,班级名称作为key
list.add(student);
params.put(classname, list);
}
//处理后map数据
//System.out.println(params);
//验证是否正确
List<Student> class1 = (List<Student>) MapUtils.getObject(params, "小学(1)班");
List<Student> class2 = (List<Student>) MapUtils.getObject(params, "小学(2)班");
List<Student> class3 = (List<Student>) MapUtils.getObject(params, "小学(3)班");
System.out.println("小学(1)班人数:" + class1.size());
System.out.println("小学(2)班人数:" + class2.size());
System.out.println("小学(3)班人数:" + class3.size());
}
验证结果:
{
小学(1)班=[Student{id=1, username='小明', classname='小学(1)班', age=6, sex='男'}],
小学(2)班=[Student{id=2, username='Suny', classname='小学(2)班', age=7, sex='男'},
Student{id=6, username='小红', classname='小学(2)班', age=7, sex='女'}],
小学(3)班=[Student{id=3, username='小花', classname='小学(3)班', age=7, sex='女'},
Student{id=4, username='Tony', classname='小学(3)班', age=5, sex='女'},
Student{id=5, username='Hello', classname='小学(3)班', age=7, sex='女'}]
}
小学(1)班人数:1
小学(2)班人数:2
小学(3)班人数:3