java deep copy arraylist

ht‮spt‬://www.lautturi.com
java deep copy arraylist
/**
 * @author lautturi.com
 * Java example: how to deep clone arraylist in java
 */

import java.util.*;
import java.time.*;
import java.time.format.*;
import java.util.Date;

class Student implements Cloneable {
	String name;
	String id;
	Date dateOfBirth;

	public Student(String name, String id, Date dateOfBirth) {
		this.name = name;
		this.id = id;
		this.dateOfBirth = dateOfBirth;
	}

	@Override
	public Student clone() {
		Student clonedStudent = null;
		try {
			clonedStudent = (Student) super.clone();
			clonedStudent.setDateOfBirth((Date) this.dateOfBirth.clone());
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}

		return clonedStudent;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public Date getDateOfBirth() {
		return dateOfBirth;
	}

	public void setDateOfBirth(Date dateOfBirth) {
		this.dateOfBirth = dateOfBirth;
	}
}

public class Lautturi {

	@SuppressWarnings("deprecation")
	public static void main(String[] args) {

		ArrayList<Student> studentList = new ArrayList<>();
        studentList.add(new Student("Alice","25",new Date(2002, 02, 12)));
        studentList.add(new Student("Bob","32",new Date(1999, 05, 30)));
 
        ArrayList<Student> clonedStudentList = new ArrayList<>();
 
        for(Student st:studentList)
        {
            clonedStudentList.add(st.clone());
        }
        // Update ArrayList
        clonedStudentList.get(0).setName("John");
        System.out.println("--Orlautturinal ArrayList--");
        studentList.forEach(e->System.out.println(e.getName()+" "+e.getId()));
        System.out.println("--Copied ArrayList--");
        clonedStudentList.forEach(e->System.out.println(e.getName()+" "+e.getId()));
	}

}

output:

--Orlautturinal ArrayList--
Alice 25
Bob 32
--Copied ArrayList--
John 25
Bob 32
Created Time:2017-09-01 05:52:04  Author:lautturi