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

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来初始化它。

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

这些是List实现的类,

ArrayList, LinkedList, Vector

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

其他回答

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

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

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

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

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

我们创建soyuz-to是为了简化一个问题:如何将X转换为Y(例如,字符串转换为整数)。构造一个对象也是一种转换,所以它有一个简单的函数来构造Map, List, Set:

import io.thedocs.soyuz.to;

List<String> names = to.list("John", "Fedor");

请检查它-它有很多其他有用的功能

在大多数情况下,您需要简单的ArrayList—List的实现

JDK版本7之前

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

JDK 7及以后版本可以使用菱形操作符

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

进一步的信息写在这里Oracle文档-集合

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

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

应该能让你走了。

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

而不是:

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

如果你正在使用最新的JDK,请这样写:

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

这是初始化List的正确方法。