カスタムLinkedListでListIteratorを使用します
-
24-10-2019 - |
質問
私は自分で構築したカスタム、一般的な、単独でリンクリストを持っています。追加して、リストに削除することができます。 Java Listiteratorをクラスに実装したいと思います。これを始めるにはどうすればよいですか?クラスに追加する必要がある方法は何ですか?ウェブ上で見つけることができるのは、デフォルトのJava LinkedListでListiteratorを使用する例です。ありがとう!
解決
Listitateratorインターフェイスのすべての機能を実装する2番目のクラス(通常、リンクリストのネストされたクラス)を作成します。いくつかの機能(次のように)に注意してください add
と remove
)はオプションです - サポートされていないエクセプトをスローすることができます。リンクされたリストクラスは、メソッドを実装する必要があります listIterator()
と listIterator(int)
セカンドクラスのインスタンスを返すため。
他のヒント
実装する必要があります イテレーター または Listiterator インターフェース。
Listiteratorが持っている方法を探します。あなたのバージョンがそれらの同じ方法を持っていることを確認する必要があります。
可能であれば、を探してください Interface
そのListiteratorは、そのインターフェイスを使用し、実装します。
パフォーマンスのために、実装できます ListIterator
そして、あなたがそれを繰り返すとき、あなたのリストの「後方」バージョンを保持します。これにより、二重にリンクされたリストがエミュレートされますが、イテレーターのみです。
ただし、リンクされたリストを下に二重にリンクしたリストとして実装する方がおそらく安全です。
それが単独でリンクされたリストの場合、実装 ListIterator
両方向にナビゲートする必要があるため、トリッキー(不可能ではないにしても)は、頭から何度も再起動することによってのみ実装できるためです。
リストをダブルリンクするか、投げる必要があります UnsupportedOperationException
多くの方法について。 (または、半分の方法でo(n)パフォーマンスと一緒に暮らす)