現有學生表
public class Student {
/**
* 班級id
*/
private String classId;
/**
* 學生name
*/
private String name;
public Student() {
}
public Student(String classId, String name) {
super();
this.classId = classId;
this.name = name;
}
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
往student里存數據,並通過classId將student的list進行分類
public static void main(String[] args) {
List<Student>allData=new ArrayList<Student>();
allData.add(new Student("class1","張三"));
allData.add(new Student("class1","李四"));
allData.add(new Student("class1","王五"));
allData.add(new Student("class2","趙六"));
allData.add(new Student("class2","scy"));
Map<String, List<Student>>map=new HashMap<String, List<Student>>();
for(Student student:allData){
if(map.get(student.getClassId())==null){
List<Student>list=new ArrayList<Student>();
list.add(student);
map.put(student.getClassId(), list);
}else{
List<Student>list=map.get(student.getClassId());
list.add(student); }
}
for (Student stu:map.get("class1")) {
System.out.println("班級id為:"+stu.getClassId()+"的"+stu.getName());
}
System.out.println("------------------------------");
for (Student stu:map.get("class2")) {
System.out.println("班級id為:"+stu.getClassId()+"的"+stu.getName());
}
}
輸出結果:
班級id為:class1的張三
班級id為:class1的李四
班級id為:class1的王五
------------------------------
班級id為:class2的趙六
班級id為:class2的scy
這樣之后,map中key為class1的對象有三個,key為class2的對象有兩個,可以通過這樣的分類之后再將數據進行插入或修改就很方便了
順便說一下遍歷map,執行插入或修改操作的相關代碼:
List<Student> students = new ArrayList<Student>();
Student stu1=new Student();
for (String key : map.keySet()) {
for (Student stu2 : map.get(key)) {
stu1.setClassId(stu2.getClassId());
stu1.setName(stu2.getName());
students.add(stu1);
}
addStudent(students);//執行插入方法
students.clear();//插入完后清空,第二次循環在往里面存值
}
