Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在arrayList.remove()中获取新对象 ArrayList treeList=新建ArrayList(); ArrayList aList=新的ArrayList(); ArrayList bList=新的ArrayList(); 1.增加第(1)款; 树列表。添加(列表); bList=treeList.remove(0); a.clear()//布利斯特将被清除_Java_Arraylist - Fatal编程技术网

Java 如何在arrayList.remove()中获取新对象 ArrayList treeList=新建ArrayList(); ArrayList aList=新的ArrayList(); ArrayList bList=新的ArrayList(); 1.增加第(1)款; 树列表。添加(列表); bList=treeList.remove(0); a.clear()//布利斯特将被清除

Java 如何在arrayList.remove()中获取新对象 ArrayList treeList=新建ArrayList(); ArrayList aList=新的ArrayList(); ArrayList bList=新的ArrayList(); 1.增加第(1)款; 树列表。添加(列表); bList=treeList.remove(0); a.clear()//布利斯特将被清除,java,arraylist,Java,Arraylist,我知道bList和aList将引用同一个对象,所以当aList.clear()时,bList也将被清除,有没有办法使bList成为一个新对象。试试这个。将remove的返回作为参数传递给ArrayList构造函数 ArrayList<ArrayList<Integer>> treeList = new ArrayList<>(); ArrayList<Integer> aList = new ArrayList<>();

我知道bList和aList将引用同一个对象,所以当aList.clear()时,bList也将被清除,有没有办法使bList成为一个新对象。

试试这个。将remove的返回作为参数传递给
ArrayList
构造函数

    ArrayList<ArrayList<Integer>> treeList = new ArrayList<>();
    ArrayList<Integer> aList = new ArrayList<>();
    ArrayList<Integer> bList = new ArrayList<>();


    aList.add(1);
    treeList.add(aList);

    bList = treeList.remove(0);
    aList.clear();  //bList will be cleared
。。。有没有办法使
bList
成为一个新对象

你可以复制它;e、 g

[1]
请注意,
MyThing
在添加和删除列表时仔细复制列表,以便
MyThing
API的一个客户端不能通过共享列表干扰另一个客户端


显然,这样做是有代价的。

或者,不要指定:

public class MyThing {
    private ArrayList<ArrayList<Integer>> treeList = new ArrayList<>();

    public void add(ArrayList<Integer> l){
        treeList.add(new ArrayList<>(l));
    }

    public void remove(int index) {
        return new ArrayList<>(treeList.remove(index));
    }
}
您可以使用
List#addAll

bList = treeList.remove(0);

同意。我们的问题是OP没有解释他们真正想做什么。根据真正的问题是什么,这可能是一个更好的解决方案。
public class MyThing {
    private ArrayList<ArrayList<Integer>> treeList = new ArrayList<>();

    public void add(ArrayList<Integer> l){
        treeList.add(new ArrayList<>(l));
    }

    public void remove(int index) {
        return new ArrayList<>(treeList.remove(index));
    }
}
bList = treeList.remove(0);
bList.addAll(treeList.remove(0));