2

LinkedList について混乱しています。彼らは私には本当に意味がありません。誰かがそれが基本的にどのように機能するかを説明してもらえますか? たとえば、このコード (以下) を見ましたが、意味がわかりませんでした。私が推測していることから、文字列リスト (list1) が作成され、LinkedList に入れられます。しかし、リストと LinkedList の違いは何ですか?? ありがとう

List<String>list1 = new LinkedList<String>() 
4

5 に答える 5

2

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 メソッドを安全に呼び出すことができます。

于 2012-12-03T21:08:24.683 に答える
2

この行は、リスト インターフェイスLinkedListに格納するための空のオブジェクトを割り当てます。 List インターフェースの考え方は、後でコードの残りの部分を変更する必要なく、を交換できるということです。String
LinkedListArrayList

例えば:

List<String> list1 = new ArrayList<String>();

list.add("element1");

list.add() は、 forArrayListと forの両方で機能しますLinkedList。これが目的ですList Interface

于 2012-12-03T21:13:31.460 に答える
1

LinkiedListListインターフェースを実装しているので、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インターフェイスにはクラスと同じメソッドがあります。

于 2012-12-03T21:38:07.123 に答える
1

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 を作成するポリモーフィックな方法です。

以下は、リストの特徴の一部です。

  1. 重複を受け入れる
  2. インデックスを使用してアクセスできます。
  3. 広告掲載順を維持
于 2012-12-03T21:08:17.740 に答える
0

あなたを混乱させているのは、ジェネリックの使用だと思います。

ここでは、ジェネリックなしです。

List list1 = new LinkedList();

これは非常に単純な Java コードです。LinkedList オブジェクトを作成し、それを List 型の変数に割り当てます。LinkedList は List インターフェイスを実装しているため、これが機能します。

それでは、ジェネリックを追加して戻しましょう。

List<String>list1 = new LinkedList<String>();

異なるのは、LinkedList に何を含めるかを指定していることだけです。

リストに何かを入れるには:

list1.add("Something in my linked list");
于 2012-12-03T21:18:05.813 に答える