LinkedList固有のメソッドを使用したい場合はLinkedListで宣言すること
ArrayListやLinkedListを宣言するときは以下のように宣言します。
List<String> list = new LinkedList<String>();
一般的にはListインタフェースで宣言します。多分それでよいはずですが、ListはインタフェースなのでArrayListやLinkedListの最低限の仕様が記述されているだけです。
LinkedListもArrayListもListの仕様は満たすものの、それぞれ固有のメソッドがあるので、この書き方は必ずしも正解とは言えないです。
例えば、キューなどでLinkedListを使用したい場合はLinkedList固有のメソッドを使用したい場合があるため以下のように宣言する必要があります。
LinkedList<String> list = new LinkedList<String>();
これでlistインスタンスはaddFirstやaddLast、offerやpeekメソッドが使えるようになります。
Listはあくまでも最低限のインタフェース(仕様)なのでLinkedList固有のメソッドは持っていません。前者の宣言方法だとofferメソッドは使えません。この点、理解しておくことが大事です。
Listインタフェースをimplementsするクラスの宣言方法については
List<String> list = new LinkedList<String>();
が必ずしも正解で
LinkedList<String> list = new LinkedList<String>();
が必ずしも間違った書き方ではなくて、その時々の用途によって宣言方法は使い分けるのが正解だと思います。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント