上周我一直在学习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的方法?如果是这样,是否有理由专门使用一种方式? (除了可读性之外的原因)。 感谢。
答案 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);