Java ArrayList常用方法

Java ArrayList clone()方法  用于复制arraylist数组,它属于浅拷贝。

这里,浅拷贝指的是只能拷贝简单类型,对于对象的拷贝,里面是有属性的就失效了,具体看例子2。

Java中的拷贝的概念属于面试题之一,请参考这里

语法

语法如下:
public Object clone()

参数

没有参数

返回值

返回克隆的对象Oject,需要转为ArrayList类型。

例子

介绍2个例子了解该函数的使用方法

例1

arraylist元素简单类型的例子

import java.util.ArrayList;
import java.util.List;

public class ArrayListCloneExample {
    public static void main(String[] args) {
            ArrayList<String> arrayList= new ArrayList<String>();
        arrayList.add("yxjc123.com");
        arrayList.add("taobao.com");
        arrayList.add("baidu.com");
        arrayList.add("sohu.com");

        ArrayList<String> arrayList2 = (ArrayList<String>) arrayList.clone();

        arrayList.set(1,"tmall.com");//修改arraylist并没有改变arraylist2的元素的值

        System.out.println(arrayList);
        System.out.println(arrayList2);

    }
} 

输出:

[yxjc123.com, tmall.com, baidu.com, sohu.com]
[yxjc123.com, taobao.com, baidu.com, sohu.com]

例2

下面看一个arraylist对象的例子。

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<Person> arrayList= new ArrayList<Person>();
        Person teacher = new Person("张三老师","男","xxx学院");
        arrayList.add(teacher);

        ArrayList<Person> arrayList2 = (ArrayList<Person>) arrayList.clone();

        arrayList.get(0).setName("修改张三老师");

        System.out.println(arrayList);
        System.out.println(arrayList2);

    }


}

class Person {
    private String name ;
    private String sex;
    private String college;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", college='" + college + '\'' +
                '}';
    }
    

    public Person() {
    }

    public Person(String name, String sex, String college) {
        this.name = name;
        this.sex = sex;
        this.college = college;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getCollege() {
        return college;
    }

    public void setCollege(String college) {
        this.college = college;
    }
} 

输出:
[Person{name='修改张三老师', sex='男', college='xxx学院'}]
[Person{name='修改张三老师', sex='男', college='xxx学院'}]

 修改了arraylist的元素后,arraylist2也变了,这和例1是不一样的。