1. 程式人生 > >java for迴圈中使用克隆代替new物件

java for迴圈中使用克隆代替new物件

public class User implements Cloneable {

    private Integer age;
    private String name;


    public User() {
    }

    public User(Integer age) {
        this.age = age;
    }

    public User(Integer age, String name) {
        this.age = age;
        this.name = name;
    }

    public User clone() throws CloneNotSupportedException{
        return (User)super.clone();
    }

    @Override
    public String toString() {
        return "User{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    public Integer getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

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

    public void setAge(Integer age) {
        this.age = age;
    }
}
        List<User> userList1 = new ArrayList<>();
        List<User> userList2 = new ArrayList<>();

        long t1 = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++) {
            User u1 = new User();
            u1.setAge(10);
            u1.setName("Tom" + i);
            userList1.add(u1);
        }
        long t2 = System.currentTimeMillis();


        User u1 = new User();
        for (int i = 0; i < 100000; i++) {
            User u2 = u1.clone();
            u2.setAge(20);
            u2.setName("Tom" + i);
            userList2.add(u2);
        }
        long t3 = System.currentTimeMillis();

        System.out.println(t2 - t1);
        System.out.println(t3 - t2);

輸出:

67 31

基於 intel corei7,java1.8

list中的元素也正確。可見,for迴圈中使用克隆生成物件的效率比new生成物件的效率高。

以上是淺克隆。