私は自分で作成したカスタムのジェネリックな単一のLinkedListを持っています。リストに追加、削除などをうまく行うことができます。クラスにJavaListIteratorを実装したいと思います。これをどのように始めればよいですか?クラスに追加する必要があるメソッドは何ですか?私がWebで見つけることができるのは、デフォルトのJava LinkedListでListIteratorを使用する例だけですが、これは私には良くありません。ありがとう!
5 に答える
IteratorまたはListIteratorインターフェースを実装する必要があります。
ListIteratorインターフェースのすべての機能を実装する2番目のクラス(通常はリンクリストのネストされたクラス)を作成します。一部の関数(add
およびなどremove
)はオプションであることに注意してください。UnsupportedOperationExceptionをスローするだけです。リンクリストクラスは、メソッドを実装し、2番目のクラスのインスタンスを返す必要がlistIterator()
ありlistIterator(int)
ます。
単一リンクリストのListIterator
場合、両方向にナビゲートする必要があるため、実装には注意が必要です(不可能ではないにしても)。これは、頭から何度も再起動することによってのみ実装できます。
リストを二重リンクにするかUnsupportedOperationException
、多くのメソッドを使用する必要があります。(または、半分の方法でO(n)のパフォーマンスを維持します)
ListIteratorが持っているメソッドを探します。あなたはそれのあなたのバージョンがそれらの同じメソッドを持っていることを確認する必要があるでしょう。
可能であれば、Interface
ListIteratorが使用するものを探し、そのインターフェイスを実装します。
ListIterator
パフォーマンスのために、リストを反復処理するときに、リストの「逆方向」バージョンを実装して保持することができます。これは二重にリンクされたリストをエミュレートしますが、イテレータのみです。
ただし、リンクリストを二重リンクリストとして実装する方がおそらく安全です。