40

これら2つのオブジェクトを作成するときの違いは何ですか

Queue<String> test = new LinkedList<String>();

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

testとの実際の違いは何test2ですか?それらの両方LinkedListですか?パフォーマンスの違いや、一方を他方に使用する理由はありますか?

4

3 に答える 3

58

作成した2つのステートメントはそれぞれLinkedList<String>、文字列のリストを保持するオブジェクトを作成し、それを変数に割り当てます。違いは変数のタイプにあります。

LinkedList<String>タイプの変数にを割り当てることにより、インターフェイスで使用可能なQueue<String>のメソッドにのみアクセスできます。これには、要素のエンキューおよびデキューのサポートが含まれます。これは、さまざまな操作にキューを使用するプログラムを作成する必要があり、リンクリストを使用してそのキューを実装する場合に役立ちます。LinkedListQueue<String>

LinkedList<String>タイプの変数にを割り当てることにより、インターフェイスで使用可能なList<String>のメソッドにのみアクセスできます。これは、要素のシーケンスを維持するための通常の操作です。これは、たとえば、どこでも拡大および縮小できる要素のリストを処理する必要がある場合に役立ちます。LinkedListList<String>

つまり、2つの行は同じオブジェクトを作成しますが、それらを異なる方法で使用することを目的としています。1つは、リンクリストに裏打ちされたキューが必要であると述べ、もう1つは、リンクリストに裏打ちされた要素の一般的なシーケンスが必要であると述べています。

お役に立てれば!

于 2013-03-25T05:13:16.020 に答える
5

どちらの場合も、インスタンス化していますLinkedList

違いは、それらのインスタンスを参照するために使用する変数のタイプです。

testタイプQueuetest2あり、タイプListです。変数のタイプに応じて、その特定のタイプで指定されたメソッドのみを呼び出すことができます。これがあなたの状況にとって重要だと思います。

パフォーマンスに関しては、どちらの場合も実際に使用している実装は同じであるため、同じになります(LinkedList)。

于 2013-03-25T05:16:47.057 に答える
3

公開するメソッドのタイプを除いて、どちらもほとんど同じだと思います。LinkedListは両方のインターフェースを実装しているため、どちらかを選択すると、そのインターフェースタイプのメソッドにアクセスできるようになります。

インターフェイスメソッドの宣言については、これらのリンクをご覧ください。

http://docs.oracle.com/javase/6/docs/api/java/util/Queue.html http://docs.oracle.com/javase/6/docs/api/java/util/List.html

パフォーマンスについてはよくわかりませんが、オブジェクトの実装は一般的であるため、違いはないはずです。

于 2013-03-25T05:16:34.887 に答える