从一个列表复制到另一个列表

时间:2012-07-22 17:49:55

标签: java list iterator structure

我有一组对的列表。如果我使用相同的,它会复制每一套?

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();

2 个答案:

答案 0 :(得分:4)

没有。赋值不会复制任何内容,而是将list2引用更新为指向list1。所以你可以使用list2,就像它是list1一样;但是你对2做出的改变将反映在1中。

答案 1 :(得分:4)

list2 = list1

此作业只是将引用list2指定为与list1相同的列表。 (请注意,只有一个列表,其中包含两个引用。)如果要复制列表,则需要使用复制构造函数:

list2 = new ArrayList<HashSet<Pair>>(list1);