LinkedList について混乱しています。彼らは私には本当に意味がありません。誰かがそれが基本的にどのように機能するかを説明してもらえますか? たとえば、このコード (以下) を見ましたが、意味がわかりませんでした。私が推測していることから、文字列リスト (list1) が作成され、LinkedList に入れられます。しかし、リストと LinkedList の違いは何ですか?? ありがとう
List<String>list1 = new LinkedList<String>()
LinkedList は、List インターフェイスを実装するクラスです。インターフェースは実際のクラスではなく、それらを実装するクラスが公開する必要があるメソッドの規則/青写真に似ています。
たとえば、Shape というインターフェイスがある場合
interface Shape() {
public void draw();
}
これには draw のメソッド本体が含まれていることに注意してください。むしろ、このインターフェイスを実装するすべてのクラスには draw というメソッドが必要であるという規則です。ここで、上記のインターフェースを両方とも実装する 2 つのクラスがあるとします。
class Box implements Shape {
public void draw() {
//do actual drawing in this method body
}
}
class Circle implements Shape {
public void draw() {
//do actual drawing in this method body
}
}
その後、Circle または Box のいずれかのインスタンスを Shape 変数にキャストし、draw メソッドを安全に呼び出すことができます。
この行は、リスト インターフェイスLinkedList
に格納するための空のオブジェクトを割り当てます。
List インターフェースの考え方は、後でコードの残りの部分を変更する必要なく、を交換できるということです。String
LinkedList
ArrayList
例えば:
List<String> list1 = new ArrayList<String>();
list.add("element1");
list.add() は、 forArrayList
と forの両方で機能しますLinkedList
。これが目的ですList Interface
LinkiedList
Listインターフェースを実装しているので、Listも実装していますLinkedList
。
これはLinkedList
クラスの定義です:
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
ご覧のとおり、LinkedList
クラスはListインターフェイスを実装しています。
したがって、LinkedList
リスト(または正確にはリストボットの子ではない)と同様に、ポリモーフィズムを使用して、あなたが言っているようにリストオブジェクトをインスタンス化できます。Listインターフェースは、このインターフェースを実装するクラスの動作を示します。この場合はLinkedList
。インターフェイスはコントラクトのようなものであることに注意してください。したがって、A* LLで定義されているメソッド*リストインターフェイスはに実装する必要がありLinkedList class
ます。LinkedList
このように、Listインターフェイスにはクラスと同じメソッドがあります。
java.util.List
はインターフェースであり、java.util.LinkedList
を実装するクラスList interface
です。
List<String>list1 = new LinkedList<String>();
SuperClass(Class or interface) ref= new SubClass(Implementing class/concrete class)
上記は、LinkedList を作成するポリモーフィックな方法です。
以下は、リストの特徴の一部です。
あなたを混乱させているのは、ジェネリックの使用だと思います。
ここでは、ジェネリックなしです。
List list1 = new LinkedList();
これは非常に単純な Java コードです。LinkedList オブジェクトを作成し、それを List 型の変数に割り当てます。LinkedList は List インターフェイスを実装しているため、これが機能します。
それでは、ジェネリックを追加して戻しましょう。
List<String>list1 = new LinkedList<String>();
異なるのは、LinkedList に何を含めるかを指定していることだけです。
リストに何かを入れるには:
list1.add("Something in my linked list");