我刚刚开始使用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相比有什么不同。 我无法理解为什么要使用课程。如果这是数组的“新类型”,为什么要使用类而不是正常声明呢?
很抱歉,如果这听起来很奇怪,但我是初学者,真的需要帮助。
谢谢!
答案 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
中定义的契约(例如,有序方面)。这些实现是具体的类,您可以在代码中进行选择。
LinkedList
和ArrayList
是List
的JDK实现。
您共享的类(LinkedIntList
)是一个自定义的对象结构,既不是JDK的一部分,也不是实现java List
接口。
答案 3 :(得分:-1)