Lists.newArrayList是Guava库提供的一个方便的方法,用于创建一个类型安全的ArrayList。而new ArrayList()是Java原生的方式。
区别如下:
- 类型安全:使用
Lists.newArrayList创建的列表是类型安全的,意味着你可以在创建时指定列表中元素的类型,这样编译器可以在编译时进行类型检查。而new ArrayList()不是类型安全的,需要在运行时进行类型检查。 - 初始容量:
Lists.newArrayList可以接收一个初始容量参数,如果你知道大概需要多少元素,可以提供一个初始容量,这样可以减少重新分配的次数,从而提高性能。new ArrayList()则不可以。 - 导入:使用
Lists.newArrayList需要导入Guava库,而new ArrayList()是Java基础库的一部分,不需要额外导入。
示例代码:
// 使用Lists.newArrayList
import com.google.common.collect.Lists;
List<String> listWithGuava = Lists.newArrayList(); // 类型安全,无初始容量
List<String> listWithGuavaAndInitialCapacity = Lists.newArrayListWithCapacity(10); // 类型安全,有初始容量
// 使用new ArrayList()
import java.util.ArrayList;
ArrayList<String> listWithJava = new ArrayList<>(); // 非类型安全,无初始容量
ArrayList<String> listWithJavaAndInitialCapacity = new ArrayList<>(10); // 非类型安全,有初始容量如果不需要Guava库提供的额外功能,并且项目中没有使用Guava库,那么应该使用new ArrayList()以减少依赖。如果项目中已经在使用Guava库,为了代码的一致性和类型安全,可以选择Lists.newArrayList。