版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/u010002184/article/details/83107964
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生成对象的效率高。
以上是浅克隆。