2017-02-23 18 views
1

私はインスタンス変数を持つノードという名前のクラスを作成することになっています:E data(Generic)とnextNode(単独リンクリスト実装)。これを行うには、クラスを作成しました。汎用ノードは汎用リストに含める必要がありますか?

public class Node<E> 

すべての関連メソッドを実装しました。

次に、インスタンス変数Node headとint sizeを持つListを作成する必要があります。要するに、リストにはノードの集合が含まれています。しかし、クラスをジェネリックリストまたはレギュラーリストとして定義する必要があるかどうかはわかりません。より多くの意味と理由を作る実装

public class List 

public class List<E> 

?ジェネリックスの概念を理解できるように助けてくれる人に感謝します。

+4

'List'で型を指定しなかった場合、あなたの' List'に 'Node'をどのようにしてタイプしますか(なぜですか?) –

+0

私はその質問を理解しているか分からない。私のノードにさまざまなタイプのデータが含まれている場合、リストに関係しますか?私はリストがノードを含むことだけを気にしていると思った。 – modegv

答えて

3

ときあなたのリストのみList<E>を使用し、1種類の要素の追加をサポートする必要がある場合List<E>

を使用します。

たとえば、IntegerのリストまたはDoubleのリストを作成できますが、2つを組み合わせたリストは作成できません。

次に、汎用タイプEを使用する追加および削除インターフェイスをサポートして、そのタイプのアイテムのみを追加でき、他のアイテムを追加できないようにすることができます。

すると、あなたのリストには、多くの異なる種類の追加項目をサポートする必要がある場合Listを使用し、List

を使用します。

例えば、Node<Integer>Node<Scanner>、およびNode<Double>を追加したい場合は、

このようにすれば、リストには型パラメータがないため、希望するタイプのNodeを追加することができます。あなたは(質問はあなたがいるように、それが聞こえる)独自のListクラスを記述している場合は、上記の

警告

が成り立ちます。組み込みのjava.util.Listクラスを使用している場合は、型パラメーターなしで使用しないでください。

+0

答えの最初の半分だけが正しいです。あなたのリストが多くの異なる型の項目の追加をサポートする必要がある場合は、 'List '、または保存したいものすべてのスーパータイプである他の型の 'List'を使うべきです。型パラメータなしで 'List'を使うべきではありません。 –

+0

@DavidWallace私は、型パラメータなしで生の型 'java.util.List'を使うべきではないことを知っていますが、それはOPが質問する質問ではありません。彼は 'List'を独自に実装しています。すべてのオブジェクトを受け入れるには、型パラメータなしではそれを行うことができません。 – nhouser9

関連する問題