如何在Java中初始化List <String>对象?
我不能像下面的代码那样初始化一个List:
List<String> supplierNames = new List<String>(); supplierNames.add("sup1"); supplierNames.add("sup2"); supplierNames.add("sup3"); System.out.println(supplierNames.get(1));
我面临以下错误:
无法实例化types
List<String>
我如何实例化List<String>
?
如果你检查List
的API ,你会注意到它说:
Interface List<E>
作为一个interface
意味着它不能被实例化(没有new List()
是可能的)。
如果你检查这个链接,你会发现一些实现List
class
:
所有已知的实现类:
AbstractList
,AbstractSequentialList
,ArrayList
,AttributeList
,CopyOnWriteArrayList
,LinkedList
,RoleList
,RoleUnresolvedList
,Stack
,Vector
那些可以被实例化。 使用他们的链接了解更多关于他们,IE:知道哪些更适合您的需求。
最常用的三种可能是:
List<String> supplierNames1 = new ArrayList<String>(); List<String> supplierNames2 = new LinkedList<String>(); List<String> supplierNames3 = new Vector<String>();
奖金:
您还可以使用Arrays
class
以更简单的方式使用值实例化它,如下所示:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3"); System.out.println(supplierNames.get(1));
但是请注意,您不允许将更多的元素添加到该列表中,因为它是fixed-size
。
列表是一个接口 ,你不能实例化一个接口,因为接口是一个约定,什么方法应该有你的类。 为了实例化,您需要该接口的一些实现(实现)。 尝试下面的代码与非常stream行的List接口实现:
List<String> supplierNames = new ArrayList<String>();
要么
List<String> supplierNames = new LinkedList<String>();
你将需要使用ArrayList<String>
等。
List<String>
是一个接口。
用这个:
import java.util.ArrayList; ... List<String> supplierNames = new ArrayList<String>();
List是一个接口,你不能初始化一个接口。 实例化一个实现类。
喜欢:
List<String> abc = new ArrayList<String>(); List<String> xyz = new LinkedList<String>();
列表只是一个接口,一些通用列表的定义。 你需要提供这个列表界面的实现。 两个最常见的是:
ArrayList – 在数组上实现的列表
List<String> supplierNames = new ArrayList<String>();
LinkedList – 一个像元素相互连接的链表
List<String> supplierNames = new LinkedList<String>();
在大多数情况下,你想要简单的ArrayList
– 一个List
的实现
在JDK版本7之前
List<String> list = new ArrayList<String>();
JDK 7及更高版本可以使用钻石运算符
List<String> list = new ArrayList<>();
更多信息在这里写入Oracle文档 – 集合
取决于你想使用什么样的列表,类似
List<String> supplierNames = new ArrayList<String>();
应该让你去。
List是接口,ArrayList是List接口的一个实现。 可以通过阅读List接口的JavaDocs来find更适合您的需求的更多实现。
列表是一个接口。 你不能用List来初始化它。
List<String> supplierNames = new ArrayList<String>();
这些是List推动的一些类,
ArrayList, LinkedList, Vector
你可以按照你的要求使用这些。 这些每个类都有自己的特点。
如果你只是想创build一个只有一个对象的不可变的 List<T>
,你可以使用这个API:
List<String> oneObjectList = Collections.singletonList("theOnlyObject”);
更多信息: docs
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(toList());
JDK9
List<String> list = List.of("one", "two", "three");
另外还有其他一些像Guava这样的图书馆提供的其他方法。