これら2つのオブジェクトを作成するときの違いは何ですか
Queue<String> test = new LinkedList<String>();
と
List<String> test2 = new LinkedList<String>();
test
との実際の違いは何test2
ですか?それらの両方LinkedList
ですか?パフォーマンスの違いや、一方を他方に使用する理由はありますか?
これら2つのオブジェクトを作成するときの違いは何ですか
Queue<String> test = new LinkedList<String>();
と
List<String> test2 = new LinkedList<String>();
test
との実際の違いは何test2
ですか?それらの両方LinkedList
ですか?パフォーマンスの違いや、一方を他方に使用する理由はありますか?
作成した2つのステートメントはそれぞれLinkedList<String>
、文字列のリストを保持するオブジェクトを作成し、それを変数に割り当てます。違いは変数のタイプにあります。
LinkedList<String>
タイプの変数にを割り当てることにより、インターフェイスで使用可能なQueue<String>
のメソッドにのみアクセスできます。これには、要素のエンキューおよびデキューのサポートが含まれます。これは、さまざまな操作にキューを使用するプログラムを作成する必要があり、リンクリストを使用してそのキューを実装する場合に役立ちます。LinkedList
Queue<String>
LinkedList<String>
タイプの変数にを割り当てることにより、インターフェイスで使用可能なList<String>
のメソッドにのみアクセスできます。これは、要素のシーケンスを維持するための通常の操作です。これは、たとえば、どこでも拡大および縮小できる要素のリストを処理する必要がある場合に役立ちます。LinkedList
List<String>
つまり、2つの行は同じオブジェクトを作成しますが、それらを異なる方法で使用することを目的としています。1つは、リンクリストに裏打ちされたキューが必要であると述べ、もう1つは、リンクリストに裏打ちされた要素の一般的なシーケンスが必要であると述べています。
お役に立てれば!
どちらの場合も、インスタンス化していますLinkedList
。
違いは、それらのインスタンスを参照するために使用する変数のタイプです。
test
タイプQueue
でtest2
あり、タイプList
です。変数のタイプに応じて、その特定のタイプで指定されたメソッドのみを呼び出すことができます。これがあなたの状況にとって重要だと思います。
パフォーマンスに関しては、どちらの場合も実際に使用している実装は同じであるため、同じになります(LinkedList
)。
公開するメソッドのタイプを除いて、どちらもほとんど同じだと思います。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
パフォーマンスについてはよくわかりませんが、オブジェクトの実装は一般的であるため、違いはないはずです。