これら2つのオブジェクトを作成するときの違いは何ですか
Queue<String> test = new LinkedList<String>();
そして
List<String> test2 = new LinkedList<String>();
test
とtest2
の実際の違いは何ですか?どちらもLinkedList
ですか?パフォーマンスの違いや、他のものを使用する理由はありますか?
作成した2つのステートメントは、それぞれLinkedList<String>
オブジェクトを作成して文字列のリストを保持し、それを変数に割り当てます。違いは変数の型です。
LinkedList<String>
をQueue<String>
型の変数に割り当てると、Queue<String>
インターフェースで利用できるLinkedList
のメソッドにのみアクセスできます。これには、エンキューのサポートが含まれます要素のデキュー。これは、さまざまな操作にキューを使用するプログラムを作成する必要があり、リンクリストを使用してそのキューを実装する場合に役立ちます。
タイプLinkedList<String>
の変数にList<String>
を割り当てると、List<String>
インターフェースで使用できるLinkedList
のメソッドにのみアクセスできます。これは、要素のシーケンスを維持します。これは、たとえば、どこでも拡大および縮小できる要素のリストを処理する必要がある場合に役立ちます。
つまり、2つの線は同じオブジェクトを作成しますが、それらを異なる方法で使用することを意図しています。 1つはリンクリストに基づくキューが必要であると述べ、もう1つはリンクリストに基づく一般的な要素のシーケンスが必要であると述べています。
お役に立てれば!
どちらの場合も、LinkedList
をインスタンス化しています。
違いは、それらのインスタンスを参照するために使用する変数のタイプです。
test
のタイプはQueue
およびtest2
はList
タイプです。変数のタイプに応じて、その特定のタイプで指定されたメソッドのみを呼び出すことができます。これはあなたの状況にとって重要なことだと思います。
どちらの場合も使用している実際の実装は同じ(LinkedList
)であるため、パフォーマンスに関しては同じになります。
公開するメソッドのタイプを除いて、どちらもほぼ同じだと思います。 LinkedListは両方のインターフェースを実装するため、それらの1つを選択すると、そのインターフェースタイプのメソッドにアクセスできるようになります。
インターフェースメソッドの宣言については、これらのリンクをご覧ください。
http://docs.Oracle.com/javase/6/docs/api/Java/util/Queue.htmlhttp://docs.Oracle.com/javase/6/ docs/api/Java/util/List.html
オブジェクトの実装は一般的であるため、パフォーマンスは変わらないはずですが、パフォーマンスについてはわかりません。