我有一组对的列表。如果我使用相同的,它会复制每一套?
List<HashSet<Pair>> list1 = new ArrayList<HashSet<Pair>>();
List<HashSet<Pair>> list2 = new ArrayList<HashSet<Pair>>();
list1.add(0, new HashSet<Pair>());
list1.add(1, new HashSet<Pair>());
list1.add(2, new HashSet<Pair>());
list1.add(3, new HashSet<Pair>());
如果我list2 = list1
,它是否完美复制?因为当我使用它时,它会崩溃。
Iterator<Pair> it1 = list2.get(0).iterator();
Iterator<Pair> it2 = list2.get(1).iterator();
Iterator<Pair> it3 = list2.get(2).iterator();
Iterator<Pair> it4 = list2.get(3).iterator();
答案 0 :(得分:4)
没有。赋值不会复制任何内容,而是将list2引用更新为指向list1。所以你可以使用list2,就像它是list1一样;但是你对2做出的改变将反映在1中。
答案 1 :(得分:4)
list2 = list1
此作业只是将引用list2
指定为与list1
相同的列表。 (请注意,只有一个列表,其中包含两个引用。)如果要复制列表,则需要使用复制构造函数:
list2 = new ArrayList<HashSet<Pair>>(list1);