我不能在以下代码中初始化一个列表:

List<String> supplierNames = new List<String>();
supplierNames.add("sup1");
supplierNames.add("sup2");
supplierNames.add("sup3");
System.out.println(supplierNames.get(1));

我面临以下错误:

不能实例化List<String>类型

我如何实例化列表<字符串>?


当前回答

这取决于你想使用什么样的List,比如

List<String> supplierNames = new ArrayList<String>();

应该能让你走了。

List是接口,ArrayList是List接口的一种实现。通过阅读List接口的JavaDocs,可以找到更多可能更适合您需求的实现。

其他回答

如果你只想创建一个只有一个对象的不可变List<T>,你可以使用这个API:

List<String> oneObjectList = Collections.singletonList("theOnlyObject”);

更多信息:文档

这取决于你想使用什么样的List,比如

List<String> supplierNames = new ArrayList<String>();

应该能让你走了。

List是接口,ArrayList是List接口的一种实现。通过阅读List接口的JavaDocs,可以找到更多可能更适合您需求的实现。

List是一个接口。你不能使用List来初始化它。

  List<String> supplierNames = new ArrayList<String>();

这些是List实现的类,

ArrayList, LinkedList, Vector

你可以根据你的需要使用任何一个。这些每一类都有自己的特点。

不能实例化接口,但有几个实现:

JDK2

List<String> list = Arrays.asList("one", "two", "three");

JDK7

//diamond operator
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");

JDK8

List<String> list = Stream.of("one", "two", "three").collect(Collectors.toList());

JDK9

// creates immutable lists, so you can't modify such list 
List<String> immutableList = List.of("one", "two", "three");

// if we want mutable list we can copy content of immutable list 
// to mutable one for instance via copy-constructor (which creates shallow copy)
List<String> mutableList = new ArrayList<>(List.of("one", "two", "three"));

此外,还有许多其他库提供的其他方法,如Guava。

List<String> list = Lists.newArrayList("one", "two", "three");

List只是一个接口,一个通用列表的定义。您需要提供这个列表接口的实现。最常见的两种是:

数组列表——在数组上实现的列表

List<String> supplierNames = new ArrayList<String>();

LinkedList -一个像相互连接的元素链一样实现的列表

List<String> supplierNames = new LinkedList<String>();