Java中的列表是什么

Java中的列表是什么,java,Java,我刚从Java中的列表开始,我对所有这些感到困惑。 基本上我们有ArrayList和LinkedList,它们可以定义为 LinkedList<String> s = new LinkedList<String>(); ArrayList<String> s = new ArrayList<String>(); 但这是我的问题,为什么要使用类定义LinkedIn列表?与我们刚才定义的LinkedList相比有什么不同。 我不明白

我刚从Java中的列表开始,我对所有这些感到困惑。 基本上我们有ArrayList和LinkedList,它们可以定义为

    LinkedList<String> s = new LinkedList<String>();

    ArrayList<String> s = new ArrayList<String>();
但这是我的问题,为什么要使用类定义LinkedIn列表?与我们刚才定义的LinkedList相比有什么不同。 我不明白为什么要使用类。如果这是一种“新类型”的数组,为什么要使用类而不是正常声明它

对不起,如果这听起来很奇怪,但我是一个初学者,真的需要在这方面的帮助


谢谢大家!

LinkedListJava.util包中Java平台类的一部分,广泛用于不同的任务。它支持

LinkedIntList是一个自定义实现,旨在向您展示如何实现单链表


您可以找到关于不同算法和结构以及复杂性的更多信息

java中的列表是一个有序的集合。我想你是个初学者,对语法感到困惑。如果您有java反编译器,您可以看到LinkedList和ArrayList也是类。这意味着在某个地方,某个好人为您编写了代码,并为您提供了一个类似于“LinkedIn列表”的类,并且为您提供了开箱即用的功能。 如果java为您提供了足够的功能,则不需要创建新类

但有时,开箱即用的类不足以满足我们的需求。在这种情况下,我们必须编写自己的类实现,例如您的类“LinkedIntList”


在这种情况下,似乎您需要大小和一个元素,因此您需要自己创建它

LinkedList
是在
java.util
包中定义的一个类,它已经提供给您了。它利用了一个名为泛型的功能,允许您提供将填充列表的对象类型。您基本上将其视为一个黑匣子:在大多数情况下,您不关心
LinkedList
的实际实现,而只关心它的接口(即它向您公开的方法)

您提供的类
LinkedIntList
没有通用性,只是一个链表的实现,其中每个项都是
ListNode
。我猜
ListNode
包含一个整数,否则名称
LinkedIntList
就没有多大意义了

无论如何,您可以放弃这个实现(尽管对学习有好处),只需声明

LinkedList myLinkedList=新建LinkedList()


如果您想了解有关泛型的更多信息,.

在第一个示例中

LinkedList<String> s = new LinkedList<String>();
LinkedList s=newlinkedlist();
它是在标准库中定义的LinkedList的实现,特别是从包java.util中定义的。请看这里:

您可以查找它的源代码(1000多行,所以我不会在这里发布),并将其与LinkedIn列表的自定义实现进行比较


基本上,Java已经提供了LinkedList的默认实现(您的第一个示例),但每个人仍然可以编写(一个类)并使用自己的实现(您的第二个示例)。

您的问题不清楚,但我将尝试向您解释列表的本质

列表是一种数据结构,不仅在Java中是如此,在许多编程语言中也是如此。数组也是一种数据结构。数据结构以有组织的方式保存和管理数据

在Java中,列表和数组的主要区别在于列表具有动态大小,而数组在声明数组时具有固定大小

Java中的所有列表都是
List
接口的实现。如果您不知道接口是什么,我建议您了解它,但基本上这意味着所有列表都可以为您完成相同的基本任务,但在内部执行方式不同

例如,
ArrayList
在内部使用数组,以便根据需要扩展或缩小列表(实现动态大小)<代码>链接列表
使用相互连接的节点在内部以不同的方式实现。但是它们都为程序员提供了相同的基本操作集,在
列表
界面中定义(尽管一个可以提供其他方法,另一个不提供)

因为它们的内部实现不同,所以对于不同的操作,它们的性能可能不同。他们有不同的算法来做事情(例如,访问索引中的一个值),并且有不同的“速度”(复杂性)

大多数情况下,ArrayList将是正确、简单的选择

希望这有帮助。

java是一个有序的对象集合,这个
java.util.List
实际上是一个定义列表行为的接口(契约)

java标准JDK中有多个
List
变体(实现),虽然每个变体都不同,但它们遵守
List
中定义的契约(例如,有序方面)。这些实现是具体的类,您可以从代码中选择

您提到的是
List
的JDK实现


您共享的类(
LinkedIntList
)是一个定制的对象结构,既不是JDK的一部分,也没有实现java
List
接口

因为java中仍然存在一个
LinkedList
,所以您可以实例化这个类,但是java中没有实现
LinkedList
(我从来没有听说过
LinkedList
,这个代码是从哪里来的?),所以您可以自己创建这个类*注意:List只是一个接口。那么当我们声明一个新的数组时会发生同样的情况吗?实际上,内部数组也是Java中的一个类,请参考
LinkedList<String> s = new LinkedList<String>();