シングルスレッドアプリケーションを使用していると仮定すると、java.util.LinkedListにループを設定できますか?ソースコードを見ると、Entryはプライベート内部クラスであるため、改ざんする方法はありません。不思議に思うのですが、リンクされたループを見つけることは、インタビューで非常に人気のある質問です。そもそもループが発生しないようにリストを設計する方法を尋ねる人は誰もいません。それとも私はここで何かを誤解していますか?
3 に答える
juLinkedListはlopsを作成するためのAPIを公開していないため、サポートされていません。たぶん、いくつかの反省的な暴力でそれが起こるかもしれません。
質問は、リンクリストのない標準ライブラリを使用するcプログラマーの世代から来ていると思います。彼らは、自分でロールすることがよくあります。また、Cにはプライベート修飾子がないため、必要に応じてCリンクリストにループを作成することが常に可能です。
特定のリストの実装を公開していないインターフェイスを提供することにより、リンクリストのループを回避できます。それがJavaで起こることです。java.util.List
はインターフェースでありjava.util.LinkedList
、メインのリストインターフェースの外にはあまり公開されていない実装の1つにすぎません。
インタビューやコンピュータサイエンスのクラスは、ノードを好きなようにリンクできるリンクリストの理論的な実装に主に関心があります。
だからあなたの質問に答えるために:いいえ、あなたはでループを持つことはできませんjava.util.LinkedList
。
ある種の誤解があるかもしれません。誰かが面接の質問をする理由はたくさんあります。この種の面接の質問は、あなたがどれだけうまくいくかを見るために設計されています:
- リンクリストの概念を理解する
- プログラミングの練習で間違いを考えることができる
- 同じのJava実装について話し合う
3番目のポイントは、Javaコードがどのように実装されているかを理解する必要がある場合は、明らかにJavaコードにアクセスできるため、私の考えではそれほど重要ではありません。