模擬測試:
//怎樣將一個集合裏面的數據按照某個參數進行分類?
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