这三种复制ArrayList的方法是否可以接受?

时间:2017-04-11 02:08:03

标签: java arraylist

上周我一直在学习Java,在复制ArrayList的时候,我正在使用这三种方式:

// arrayListSource is an ArrayList with some ints.

// First way:
ArrayList<Integer> copyOne = new ArrayList<>();
copyOne.addAll(arrayListOne);

// Second way:
ArrayList<Integer> copyTwo = new ArrayList<>(arrayListSource.subList(0, arrayListSource.size()));

// Third way:
ArrayList<Integer> copyThree = new ArrayList<>(arrayListSource);

这三种方式是否是可以接受的复制ArrayLists的方法?如果是这样,是否有理由专门使用一种方式? (除了可读性之外的原因)。 感谢。

2 个答案:

答案 0 :(得分:1)

你可以使用其中一个,但正如@ jacob-g所说,通常你需要使用第三个,因为它更具可读性。并记住 编码到接口 ,因此您需要使用List作为ArrayList的接口。像这样:

List<?> copyThree = new ArrayList<>(arrayListSource);

因此,每当您想要从 ArrayList 更改为 LinkedList 之类的另一个List实现时,您无需在任何地方将ArrayList更改为LinkedList。

您可以从以下网址阅读有关List vs ArrayList的内容:Type List vs type ArrayList in Java

答案 1 :(得分:0)

是的,所有3个都很好,但可读性以及评论中@Adrian指出的更好的性能< / strong>,使用第三个​​。另外,使用这样的泛型:

ArrayList<Integer> copyThree = new ArrayList<>(arrayListSource);