ArrayList和List Java

ArrayList和List Java,java,list,arraylist,Java,List,Arraylist,我有一个来自老师的java文件,我发现下面几行代码我不太理解。我知道他声明了一个ArrayList,其中每个元素都是一个整数列表?什么是列表?ArrayList?链接列表?谢谢大家! ArrayList<List<Integer>>L=new ArrayList<List<Integer>>(); ArrayList<Integer>l=new ArrayList<Integer>(); 一个转折点将是一件好事,也许比这个

我有一个来自老师的java文件,我发现下面几行代码我不太理解。我知道他声明了一个ArrayList,其中每个元素都是一个整数列表?什么是列表?ArrayList?链接列表?谢谢大家!

ArrayList<List<Integer>>L=new ArrayList<List<Integer>>();
ArrayList<Integer>l=new ArrayList<Integer>();
一个转折点将是一件好事,也许比这个答案更有价值

如果你要写Java,你需要知道如何研究Java文档

查找java.util包。您将看到在这里定义的列表和ArrayList。前者是一个接口,后者是一个具体的类,使用支持数组作为其实现来实现列表接口

我建议您和您的教授更喜欢:

List<List<Integer>> listOfLists = new ArrayList<List<Integer>>();
List<Integer> l = new ArrayList<Integer>();
listOfLists.add(l);

原因是首选接口类型允许您在其他实现中替换,而不会影响客户端代码。

列表是ArrayList和LinkedList以及实现列表的任何其他类型列表的接口类。ArrayList是使用数组存储对象的通用列表。LinkedList是使用节点存储对象的通用列表。每种类型的列表都必须从列表接口实现某些方法。每种类型的列表都有其优缺点。您可能需要查找LinkedList和ArrayList之间的差异

在查看代码之前,您必须了解接口和实现之间的区别。发件人:

Java编程语言中的接口是一种抽象类型 用于指定术语一般意义上的接口 这些类必须实现。接口是使用 接口关键字,并且只能包含方法签名和常量 声明声明声明为两者的变量声明 静态和最终。接口的所有方法都不包含 JAVA 8以下所有版本的实现方法体。 从Java8开始,默认方法和静态方法可能会 接口定义中的实现

一旦理解了实现和接口之间的区别,这两个声明就更容易理解了。让我们先从第二条语句开始—它更简单:

ArrayList<Integer>l=new ArrayList<Integer>();
如果遵循该逻辑,则可以看到另一行是相同的构造:

ArrayList<List<Integer>>L=new ArrayList<List<Integer>>();
事实上,如果你想走得更远,你可以:

List<Integer> linkedList = new LinkedList<Integer>();
List<Integer> vector = new Vector<Integer>();
列表是一个接口。它可以是实现它的任何类,包括ArrayList、LinkedList或其他一些
L.add(l);
List<Integer> linkedList = new LinkedList<Integer>();
List<Integer> vector = new Vector<Integer>();
L.add(linkedList);
L.add(vector);