將list中的數據通過某一個字段來分類存儲的實例


現有學生表

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();//插入完后清空,第二次循環在往里面存值
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM