什么是Java中的列表

时间:2014-05-14 10:04:46

标签: java

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

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

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

但是我们还有LinkedIntList,可以定义为例如:

class LinkedIntList {
    private ListNode first;
    private int size;

    LinkedIntList () {
        first=null;
        size=0;
    }

    LinkedIntList(LinkedIntList l) {
        first = l.getFirst();
        size=l.size();
    }

    ListNode getFirst() {return first;}
        int size() {return size;}
    }

但这是我的问题,为什么要使用类定义LinkedIntList?与我们刚才定义的LinkedLists相比有什么不同。 我无法理解为什么要使用课程。如果这是数组的“新类型”,为什么要使用类而不是正常声明呢?

很抱歉,如果这听起来很奇怪,但我是初学者,真的需要帮助。

谢谢!

4 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

在你的第一个例子中,

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

它是stardard库中定义的LinkedList的实现,特别是来自包 java.util 。见这里:http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html

您可以查找其源代码(长达1000多行,因此我不会在此处发布)并将其与LinkedIntList的自定义实现进行比较。

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

答案 2 :(得分:0)

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

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

您提到的

LinkedListArrayListList的JDK实现。

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

答案 3 :(得分:-1)

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

LinkedIntList 是一个自定义实现,只是为了向您展示如何实现单链接列表。

您可以找到有关不同算法和结构以及复杂性here

的更多信息